コード例 #1
0
        private void SetStringValue(string value)
        {
            try
            {
                byte[] values = System.Text.Encoding.Default.GetBytes(value);

                PLCManager.WriteForByte(RegisterNo, AddressNo, values);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
コード例 #2
0
 private void SetIntegerValue(UInt32 value)
 {
     try
     {
         UInt16[] x = new UInt16[2];
         x[0] = (UInt16)(value & 0xFFFF);
         x[1] = (UInt16)((value >> 16) & 0xFFFF);
         PLCManager.Write(RegisterNo, AddressNo, x);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
 }
コード例 #3
0
        private void SetIntegerValue(UInt16 value)
        {
            try
            {
                UInt16[] x = new UInt16[1];
                x[0] = value;

                PLCManager.Write(RegisterNo, AddressNo, x);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
コード例 #4
0
        private void SetByteValue(byte[] values)
        {
            try
            {
                UInt16[] x = new UInt16[1];
                x[0] = BitConverter.ToUInt16(values, 0);

                PLCManager.Write(RegisterNo, AddressNo, x);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
コード例 #5
0
        private void SetHexStringValue(string value)
        {
            try
            {
                UInt16[] x = new UInt16[1];

                x[0] = Convert.ToUInt16(value, 16);
                PLCManager.Write(RegisterNo, AddressNo, x);
            }
            catch (Exception ex)
            {
                MessageBox.Show("범위를 벗어났습니다.");
                //MessageBox.Show(ex.ToString());
            }
        }
コード例 #6
0
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            GlobalData.LoadSettings(); //加载参数
            IoC.SetupIoC();            //IoC容器启用
            log = IoC.Get <ILogWrite>();

            var service1 = IoC.Get <IDatabaseTagGroupService>();
            var service2 = IoC.Get <IDatabaseTagService>();

            PLCManager.SetService(service1, service2, log);

            log.WriteLog("程序启动");

            UserViewService.LoadLoginWindow();
            Application.Current.Exit += Current_Exit;
            //UI线程未捕获异常处理事件
            this.DispatcherUnhandledException += new DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException);
            //Task线程内未捕获异常处理事件
            TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
            //非UI线程未捕获异常处理事件
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
        }
コード例 #7
0
        //private bool CheckInputInvalidate(string data, string dataType)
        //{
        //    if (dataType == PLCSetDataType.HIGHT_BYTE || data == PLCSetDataType.LOW_BYTE)
        //    {
        //        int iVal = int.Parse(data);

        //        if (iVal > Byte.MaxValue) return false;
        //    }
        //    else if (dataType == PLCSetDataType.INTEGER)
        //    {
        //        UInt16 iVal = UInt16.Parse(data);

        //        if (iVal > UInt16.MaxValue) return false;
        //    }
        //    else if (dataType == PLCSetDataType.HEX)
        //    {
        //        if (data.Length > 4) return false;
        //    }
        //    else if (dataType == PLCSetDataType.ASCII)
        //    {

        //    }

        //    return true;
        //}

        //private void FormChangePLC_KeyDown(object sender, KeyEventArgs e)
        //{
        //    if (e.KeyCode == Keys.Enter)
        //    {
        //        FormChangePLC_Load_1(null, null);
        //    }
        //}

        private void button1_Click_1(object sender, EventArgs e)        // 입력 버튼
        {
            try
            {
                if (string.IsNullOrEmpty(textBox1.Text))
                {
                    MessageBox.Show("입력 된 정보가 없습니다.");
                    return;
                }
                if (state == 1)
                {
                    string data     = textBox1.Text;
                    string dataType = string.Empty;

                    if (sDataType == PLCSetDataType.HIGHT_BYTE)
                    {
                        UInt16[] values   = PLCManager.Read(RegisterNo, AddressNo, 1);
                        byte[]   byValues = new byte[2];
                        byValues[0] = (Byte)(values[0] & 0x00FF);
                        if (Convert.ToInt32(data) > 255 || Convert.ToInt32(data) < 0)
                        {
                            MessageBox.Show("범위를 벗어났습니다.");
                            return;
                        }
                        byValues[1] = Convert.ToByte(data);

                        SetByteValue(byValues);
                    }
                    else if (sDataType == PLCSetDataType.LOW_BYTE)
                    {
                        UInt16[] values   = PLCManager.Read(RegisterNo, AddressNo, 1);
                        byte[]   byValues = new byte[2];
                        if (Convert.ToInt32(data) > 255 || Convert.ToInt32(data) < 0)
                        {
                            MessageBox.Show("범위를 벗어났습니다.");
                            return;
                        }
                        byValues[0] = Convert.ToByte(data);
                        byValues[1] = (Byte)((values[0] & 0xFF00) >> 8);

                        SetByteValue(byValues);
                    }
                    else if (sDataType == PLCSetDataType.INTEGER)
                    {
                        if (comboBox1.Text == "UINT16")
                        {
                            if (Convert.ToInt32(data) > 65535 || Convert.ToInt32(data) < 0)
                            {
                                MessageBox.Show("범위를 벗어났습니다.");
                                return;
                            }
                            SetIntegerValue(Convert.ToUInt16(data));
                        }
                        else if (comboBox1.Text == "UINT32")
                        {
                            if (Convert.ToInt64(data) > 4294967295 || Convert.ToInt16(data) < 0)
                            {
                                MessageBox.Show("범위를 벗어났습니다.");
                                return;
                            }
                            SetIntegerValue(Convert.ToUInt32(data));
                        }
                        else if (comboBox1.Text == "UINT64")
                        {
                            SetIntegerValue(Convert.ToUInt64(data));
                        }
                    }

                    else
                    {
                        if (data.Length > 2)
                        {
                            MessageBox.Show("2글자만 입력이 가능합니다.");
                            return;
                        }
                        else
                        {
                            SetStringValue(data);
                        }
                    }

                    f1.RefreshDisplayPLCData();
                    Close();
                }
                if (state == 2)
                {
                    string data     = textBox1.Text;
                    string dataType = string.Empty;

                    if (sDataType == PLCSetDataType.HIGHT_BYTE)
                    {
                        UInt16[] values   = PLCManager.Read(RegisterNo, AddressNo, 1);
                        byte[]   byValues = new byte[2];
                        byValues[0] = (Byte)(values[0] & 0x00FF);
                        if (Convert.ToInt32(data) > 255 || Convert.ToInt32(data) < 0)
                        {
                            MessageBox.Show("범위를 벗어났습니다.");
                            return;
                        }
                        byValues[1] = Convert.ToByte(data);

                        SendByteValue(byValues);
                    }
                    else if (sDataType == PLCSetDataType.LOW_BYTE)
                    {
                        UInt16[] values   = PLCManager.Read(RegisterNo, AddressNo, 1);
                        byte[]   byValues = new byte[2];
                        if (Convert.ToInt32(data) > 255 || Convert.ToInt32(data) < 0)
                        {
                            MessageBox.Show("범위를 벗어났습니다.");
                            return;
                        }
                        byValues[0] = Convert.ToByte(data);
                        byValues[1] = (Byte)((values[0] & 0xFF00) >> 8);

                        SendByteValue(byValues);
                    }
                    else if (sDataType == PLCSetDataType.INTEGER)
                    {
                        if (comboBox1.Text == "UINT16")
                        {
                            if (Convert.ToInt32(data) > 65535 || Convert.ToInt32(data) < 0)
                            {
                                MessageBox.Show("범위를 벗어났습니다.");
                                return;
                            }
                            SendIntegerValue(Convert.ToUInt16(data));
                        }
                        else if (comboBox1.Text == "UINT32")
                        {
                            if (Convert.ToInt64(data) > 4294967295 || Convert.ToInt16(data) < 0)
                            {
                                MessageBox.Show("범위를 벗어났습니다.");
                                return;
                            }
                            SetIntegerValue(Convert.ToUInt32(data));
                        }
                        else if (comboBox1.Text == "UINT64")
                        {
                            SetIntegerValue(Convert.ToUInt64(data));
                        }
                    }

                    else
                    {
                        if (data.Length < 2)
                        {
                            MessageBox.Show("2글자만 입력이 가능합니다.");
                            return;
                        }
                        else
                        {
                            SendStringValue(data);
                        }
                    }

                    f1.RefreshDisplayPLCData();
                    Close();
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show("다시 입력해 주세요");
                //MessageBox.Show(ex.ToString());
            }
        }