Ejemplo n.º 1
0
 public void EditFunctionProperty(FunctionProperties functionProperty, int connectionNumber, int functionNumber)
 {
     connectionPropertiesList[connectionNumber].FunctionPropertiesList[functionNumber] = functionProperty;
     if (connectionPropertiesListChanged != null)
     {
         connectionPropertiesListChanged(this);
     }
 }
Ejemplo n.º 2
0
 public void AddFunctionProperty(FunctionProperties functionProperty, int connectionNumber)
 {
     connectionPropertiesList[connectionNumber].FunctionPropertiesList.Add(functionProperty);
     if (connectionPropertiesListChanged != null)
     {
         connectionPropertiesListChanged(this);
     }
 }
Ejemplo n.º 3
0
 public void AddFunctionProperty(FunctionProperties functionProperty, int connectionNumber)
 {
     // create link to connection
     functionProperty.Connection = connectionPropertiesList[connectionNumber];
     // add to list
     connectionPropertiesList[connectionNumber].FunctionPropertiesList.Add(functionProperty);
     if (connectionPropertiesListChanged != null)
     {
         connectionPropertiesListChanged(this);
     }
 }
Ejemplo n.º 4
0
 private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
 {
     // check if we are in column value
     if (e.ColumnIndex == 4)
     {
         int idx = e.RowIndex;
         FunctionProperties functionProperties = easyModbusManager.FindPropertyFromGrid(idx);
         if (functionProperties != null)
         {
             string str    = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
             int[]  values = EasyModbusManager.StrToValues(functionProperties, str);
             easyModbusManager.WriteToServer(functionProperties, values);
         }
     }
 }
Ejemplo n.º 5
0
        public void WriteToServer(FunctionProperties prop, int[] values)
        {
            /*
             * string text = "";
             * text += "property " + prop.StartingAdress + "\n" + "type " + prop.FunctionCodeWrite.ToString() + "\n" + "new value: " + values.ToString() + "\n";
             * text += "connection " + prop.Connection.ConnectionName;
             * MessageBox.Show(text, "updating register");
             */

            int startingAddress = prop.StartingAdress;

            switch (prop.FunctionCodeWrite)
            {
            case FunctionCodeWr.WriteHoldingRegisters:
                prop.Connection.modbusClient.WriteMultipleRegisters(startingAddress, values);
                break;
            }
        }
Ejemplo n.º 6
0
        public static int[] StrToValues(FunctionProperties functionProperties, string str)
        {
            int[] values = { };
            switch (functionProperties.FunctionCodeWrite)
            {
            case FunctionCodeWr.WriteHoldingRegisters:
                int value = 0;
                if (Int32.TryParse(str, out value))
                {
                    // add
                    int[] x = { value };
                    return(x);
                }

                break;
            }
            return(values);
        }
Ejemplo n.º 7
0
        void Button2Click(object sender, EventArgs e)
        {
            if (treeView1.SelectedNode == null)
            {
                return;
            }
            if (treeView1.SelectedNode.Level == 2)
            {
                FunctionProperties   functionProperty   = easyModbusManager.connectionPropertiesList[treeView1.SelectedNode.Parent.Index].FunctionPropertiesList[treeView1.SelectedNode.Index];
                ConnectionProperties connectionProperty = easyModbusManager.connectionPropertiesList[treeView1.SelectedNode.Parent.Index];

                dataGridView1.AllowUserToAddRows = false;
                for (int i = 0; i < functionProperty.Quantity; i++)
                {
                    dataGridView1.Rows.Add();
                    dataGridView1[0, dataGridView1.Rows.Count - 1].Value = connectionProperty.ConnectionName;
                    dataGridView1.ClearSelection();
                    dataGridView1.CurrentCell = null;
                    DataGridView1CellClick(null, null);

                    // DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dataGridView1.Rows[row].Cells[1];
                    switch (functionProperty.FunctionCode)
                    {
                    case FunctionCode.ReadCoils: dataGridView1[1, dataGridView1.Rows.Count - 1].Value = "0x" + (functionProperty.StartingAdress + i + 1).ToString();
                        break;

                    case FunctionCode.ReadDiscreteInputs: dataGridView1[1, dataGridView1.Rows.Count - 1].Value = "1x" + (functionProperty.StartingAdress + i + 1).ToString();
                        break;

                    case FunctionCode.ReadHoldingRegisters: dataGridView1[1, dataGridView1.Rows.Count - 1].Value = "4x" + (functionProperty.StartingAdress + i + 1).ToString();
                        break;

                    case FunctionCode.ReadInputRegisters: dataGridView1[1, dataGridView1.Rows.Count - 1].Value = "3x" + (functionProperty.StartingAdress + i + 1).ToString();
                        break;

                    default: break;
                    }
                }
                dataGridView1.AllowUserToAddRows = true;
            }
        }
Ejemplo n.º 8
0
        public void ReadXML(DataGridView dataGridView)
        {
            XmlNodeList xmlNodeList, xmlNodeList2;
            XmlNode     xmlNode3;

            System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument();
            xmlDocument.Load("textWriter.xml");
            xmlNodeList = xmlDocument.GetElementsByTagName("connection");
            connectionPropertiesList = new List <ConnectionProperties>();
            foreach (XmlNode xmlNode in xmlNodeList)
            {
                ConnectionProperties connectionProperty = new ConnectionProperties();
                connectionProperty.ConnectionName   = (xmlNode["connectionName"].InnerText);
                connectionProperty.ModbusTCPAddress = (xmlNode["ipAddress"].InnerText);
                connectionProperty.Port             = Int32.Parse(xmlNode["port"].InnerText);
                connectionProperty.CyclicFlag       = bool.Parse(xmlNode["cyclicFlag"].InnerText);
                connectionProperty.CycleTime        = Int32.Parse(xmlNode["cycleTime"].InnerText);
                xmlNode3 = xmlNode["functionCodes"];
                while (xmlNode3 != null)
                {
                    xmlNodeList2 = xmlNode3.ChildNodes;
                    FunctionProperties functionProperty = new FunctionProperties();
                    foreach (XmlNode xmlNode2 in xmlNodeList2)
                    {
                        if (xmlNode2.Name == "functionCode")
                        {
                            switch (xmlNode2.InnerText)
                            {
                            case "ReadCoils":
                                functionProperty.FunctionCode = FunctionCode.ReadCoils;
                                break;

                            case "ReadDiscreteInputs":
                                functionProperty.FunctionCode = FunctionCode.ReadDiscreteInputs;
                                break;

                            case "ReadHoldingRegisters":
                                functionProperty.FunctionCode = FunctionCode.ReadHoldingRegisters;
                                break;

                            case "ReadInputRegisters":
                                functionProperty.FunctionCode = FunctionCode.ReadInputRegisters;
                                break;
                            }
                        }
                        if (xmlNode2.Name == "startingAddress")
                        {
                            functionProperty.StartingAdress = Int32.Parse(xmlNode2.InnerText);
                        }
                        if (xmlNode2.Name == "quantity")
                        {
                            functionProperty.Quantity = Int32.Parse(xmlNode2.InnerText);
                        }
                    }
                    connectionProperty.FunctionPropertiesList.Add(functionProperty);
                    xmlNode3 = xmlNode3.NextSibling;
                }
                connectionPropertiesList.Add(connectionProperty);
            }
            if (connectionPropertiesListChanged != null)
            {
                connectionPropertiesListChanged(this);
            }
            xmlNodeList = xmlDocument.GetElementsByTagName("dataGridViewLines");
            dataGridView.Rows.Clear();
            dataGridView.AllowUserToAddRows = false;
            foreach (XmlNode xmlNode in xmlNodeList)
            {
                dataGridView.Rows.Add();
                if (xmlNode["columnConnection"] != null)
                {
                    dataGridView[0, dataGridView.Rows.Count - 1].Value = xmlNode["columnConnection"].InnerText;
                }
                dataGridView.ClearSelection();
                dataGridView.CurrentCell = null;

                if (xmlNode["columnAddress"] != null)
                {
                    dataGridView[1, dataGridView.Rows.Count - 1].Value = xmlNode["columnAddress"].InnerText;
                }
                if (dataGridViewChanged != null)
                {
                    dataGridViewChanged(this);
                }
                if (xmlNode["columnTag"] != null)
                {
                    dataGridView[2, dataGridView.Rows.Count - 1].Value = xmlNode["columnTag"].InnerText;
                }
                if (xmlNode["columnDataType"] != null)
                {
                    dataGridView[3, dataGridView.Rows.Count - 1].Value = xmlNode["columnDataType"].InnerText;
                }
            }
            dataGridView.AllowUserToAddRows = true;
        }