void Awake() { // Load saved data - make backup for case the file doesn't exist or is misformated string[] defaultInputAddresses = (string[])inputAddresses.Clone(); string[] defaultOutputAddresses = (string[])outputAddresses.Clone(); if (!PlcIO.ReadIOAddresses(ref inputAddresses, ref outputAddresses)) { inputAddresses = defaultInputAddresses; outputAddresses = defaultOutputAddresses; PlcIO.SaveIOAddresses(inputAddresses, outputAddresses, inputs, outputs); // TODO } // Duplicate before sorting sortedInputAddresses = (string[])inputAddresses.Clone(); sortedOutputAddresses = (string[])outputAddresses.Clone(); sortedInputs = (PlcInput[])inputs.Clone(); sortedOutputs = (PlcOutput[])outputs.Clone(); // Sort IO by addresses Array.Sort(sortedInputAddresses, sortedInputs); Array.Sort(sortedOutputAddresses, sortedOutputs); // Bind inputs and outputs to this plc BindIO(sortedInputs); BindIO(sortedOutputs); // Convert string addresses to numerical intInputAddresses = ParseAddresses(sortedInputAddresses); intOutputAddresses = ParseAddresses(sortedOutputAddresses); // Initialize the outputBlocks outputBlocks = GetBlocks(intOutputAddresses); inputBlocks = GetBlocks(intInputAddresses); }
private void Button_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(tb_Name.Text)) { ShowNotification("Please input name of IO", "ERROR"); return; } if (string.IsNullOrEmpty(tb_Address.Text)) { ShowNotification("Please input address of IO", "ERROR"); return; } if (comboboxValueType.SelectedItem == null) { ShowNotification("Please input address of IO", "ERROR"); return; } if (comboboxCPUType.SelectedItem == null) { ShowNotification("Please select a controller!", "ERROR"); return; } var selectController = comboboxCPUType.SelectedItem as PLCModel; var toAddIO = new PlcIO() { Name = tb_Name.Text, Value = "N/A", Address = tb_Address.Text, Type = (comboboxValueType.SelectedItem as TypeModel).Type, Controller = selectController.Address, CPUType = new CpuTypeModel() { Type = selectController.CpuType }, PlcId = selectController.Id }; PLCIOList.Add(toAddIO); tb_Name.Text = ""; tb_Address.Text = ""; dialogViewAddIO.Visibility = Visibility.Collapsed; ShowNotification("Added new IO!", "INFO", 3000); }
public bool WriteIOToPLC(PlcIO io) { try { object valueToWrite = null; switch (io.Type) { case IOTypeConstants.BOOL_TYPE: if (io.WriteValue == "True") { valueToWrite = true; } else { valueToWrite = false; } break; case IOTypeConstants.BYTE_TYPE: valueToWrite = byte.Parse(io.WriteValue); break; case IOTypeConstants.INT_TYPE: valueToWrite = int.Parse(io.WriteValue); break; case IOTypeConstants.FLOAT_TYPE: valueToWrite = float.Parse(io.WriteValue); break; case IOTypeConstants.WORD_TYPE: valueToWrite = short.Parse(io.WriteValue); break; } plc.Write(io.Address, valueToWrite); return(true); } catch { return(false); } }