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()); } }
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()); } }
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()); } }
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()); } }
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()); } }
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); }
//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()); } }