示例#1
0
        private void button_delete_Click(object sender, EventArgs e)
        {
            try
            {
                int n = dataGridView1.SelectedCells[0].RowIndex;
                if (dataGridView1.SelectedRows.Count <= 0)
                {
                    LocalPLC.UserControl1.multiprogApp.OutputWindows.Item("Infos").AddEntry("Hello world! (from C#)", AdeOutputWindowMessageType.adeOwMsgInfo, "", "", 0, "");
                    // show the output window and activate the "Infos" tab
                    LocalPLC.UserControl1.multiprogApp.OutputWindows.Item("Infos").Activate();

                    MessageBox.Show("请选择一整行进行删除");
                    return;
                }

                for (int i = dataGridView1.SelectedRows.Count - 1; i >= 0; i--)
                {
                    int index = dataGridView1.SelectedRows[i].Index;

                    dataGridView1.Rows.Remove(dataGridView1.SelectedRows[i]);
                    masterManage.modbusMastrList.RemoveAt(index);
                }
                mastermanege1 = masterManage;
                //refreshaddr();
            }
            catch
            {
                return;
            }
        }
示例#2
0
 public void getMasterData(ref ModbusMasterData data, int masterStartAddr, ModbusMasterManage a, int masterid)
 {
     masterData_      = data;
     masterData_.ID   = data.ID;
     masterStartAddr_ = masterStartAddr;
     mastermanage     = a;
     MID = masterid;
 }
示例#3
0
 public static ModbusMasterManage GetInstance()
 {
     if (instance == null)
     {
         instance = modbusmastermain.mastermanege1;
     }
     return(instance);
 }
示例#4
0
 public void getDeviceData(ref DeviceData data, int masterStartAddr, ref ModbusMasterData masterData, ref ModbusMasterManage mmange, int masterid, int masterdevid)
 {
     deviceData_      = data;
     masterStartAddr_ = masterStartAddr;
     masterData_      = masterData;
     mastermanage     = mmange;
     MID  = masterid;
     MDID = masterdevid;
 }
示例#5
0
        public void deleteTableRow()
        {
            for (int i = dataGridView1.RowCount - 1; i >= 0; i--)
            {
                //int index = dataGridView1.SelectedRows[i].Index;

                dataGridView1.Rows.RemoveAt(i);
                masterManage.modbusMastrList.RemoveAt(i);
                mastermanege1 = masterManage;
            }
        }
示例#6
0
        public void getmastermain(ref ModbusMasterManage refmodbusmastermange)
        {
            ModbusMasterManage master = mastermanege1;

            refmodbusmastermange = master;
        }
示例#7
0
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex < 0 | e.RowIndex < 0)
            {
                return;
            }

            if (dataGridView1.Columns[e.ColumnIndex].Name == columnConfig)
            {
                DataGridViewDisableButtonCell buttonCell =
                    (DataGridViewDisableButtonCell)dataGridView1.
                    Rows[e.RowIndex].Cells[columnConfig];

                if (buttonCell.Enabled)
                {
                    //MessageBox.Show(dataGridView1.Rows[e.RowIndex].
                    //    Cells[e.ColumnIndex].Value.ToString() +
                    //    " is enabled");

                    modbusmasterDeviceform form = new modbusmasterDeviceform();
                    ModbusMasterData       data = masterManage.modbusMastrList.ElementAt(e.RowIndex);
                    ModbusMasterManage     a    = masterManage;
                    int masterStartAddr         = masterManage.getMasterStartAddr();
                    form.getMasterData(ref data, masterStartAddr, a, e.RowIndex);
                    form.StartPosition = FormStartPosition.CenterScreen;
                    form.ShowDialog();
                }
            }
            else if (dataGridView1.Columns[e.ColumnIndex].Name == columnDetail)
            {
                DataGridViewDisableButtonCell buttonCell =
                    (DataGridViewDisableButtonCell)dataGridView1.
                    Rows[e.RowIndex].Cells[columnConfig];
                if (buttonCell.Enabled)
                {
                    var modbusDeviceList = masterManage.modbusMastrList[e.RowIndex].modbusDeviceList;
                    var count            = 0;

                    dataGridView2.Rows.Clear();

                    for (int i = 0; i < modbusDeviceList.Count; i++)
                    {
                        count += modbusDeviceList[i].modbusChannelList.Count;
                    }

                    dataGridView2.RowCount += count;
                    //dataGridView2.AutoSize = true;
                    //dataGridView2.AllowUserToAddRows = false;
                    //dataGridView2.ColumnHeadersDefaultCellStyle.Alignment =
                    //    DataGridViewContentAlignment.MiddleCenter;

                    int j = 0;
                    foreach (var device in modbusDeviceList)
                    {
                        string deviceName = device.nameDev;
                        foreach (var channel in device.modbusChannelList)
                        {
                            string channelName = channel.nameChannel;
                            dataGridView2.Rows[j].Cells["设备名"].Value    = deviceName;
                            dataGridView2.Rows[j].Cells["通道名"].Value    = channelName;
                            dataGridView2.Rows[j].Cells["功能码"].Value    = dicMsg[channel.msgType];
                            dataGridView2.Rows[j].Cells["通道起始地址"].Value = channel.curChannelAddr + 3;
                            dataGridView2.Rows[j].Cells["长度"].Value     = channel.readLength;
                            dataGridView2.Rows[j].Cells["触发变量地址"].Value = channel.writeOffset;
                            dataGridView2.Rows[j].Cells["错误变量地址"].Value = channel.writeLength;

                            j++;
                        }
                    }
                }
            }
        }
示例#8
0
        public void loadXml(XmlNode xn)
        {
            XmlNodeList nodeList = xn.ChildNodes;   //创建xn的所有子节点的集合

            foreach (XmlNode childNode in nodeList) //遍历集合中所有的节点
            {
                XmlElement e    = (XmlElement)childNode;
                string     name = e.Name;
                string     test = e.GetAttribute("name");//获取该节点中所有name属性的值
                Console.WriteLine(name);

                ModbusMasterData data = new ModbusMasterData();

                int.TryParse(e.GetAttribute("id"), out data.ID);//将所有id属性的值(字符串),转换成int32类型,输出变量为data.ID
                data.transformChannel = e.GetAttribute("transformchannel");
                int.TryParse(e.GetAttribute("transformmode"), out data.transformMode);
                int.TryParse(e.GetAttribute("responsetimeout"), out data.responseTimeout);
                int.TryParse(e.GetAttribute("packet_interval"), out data.packet_interval);
                bool.TryParse(e.GetAttribute("isready"), out data.isready);
                //data.transformChannel = int.TryParse(eChild.GetAttribute("transformchannel"));
                //读取device数据
                XmlNodeList nodeDeviceList = childNode.ChildNodes;//创建当前子设备节点下的所有子节点集合
                foreach (XmlNode childDeviceNode in nodeDeviceList)
                {
                    e = (XmlElement)childDeviceNode;                       //子设备节点
                    DeviceData deviceData = new DeviceData();
                    int.TryParse(e.GetAttribute("ID"), out deviceData.ID); //为各子节点赋值
                    deviceData.nameDev   = e.GetAttribute("namedev");
                    deviceData.slaveAddr = e.GetAttribute("slaveaddr");
                    int.TryParse(e.GetAttribute("responsetimeout"), out deviceData.reponseTimeout);
                    int.TryParse(e.GetAttribute("permittimeoutcount"), out deviceData.permitTimeoutCount);
                    int.TryParse(e.GetAttribute("reconnectinterval"), out deviceData.reconnectInterval);
                    deviceData.resetVaraible = e.GetAttribute("resetvaraible");
                    string[] resetkey = e.GetAttribute("resetkey").Split('m');
                    deviceData.resetkey[0] = resetkey[0];
                    deviceData.resetkey[1] = resetkey[1];
                    int.TryParse(e.GetAttribute("devstartaddr"), out deviceData.curDeviceAddr);
                    int.TryParse(e.GetAttribute("devlength"), out deviceData.curDeviceLength);
                    //读取channel数据
                    XmlNodeList nodeChannelList = childDeviceNode.ChildNodes;
                    foreach (XmlNode childChannelNode in nodeChannelList)
                    {
                        e = (XmlElement)childChannelNode;
                        ChannelData channelData = new ChannelData();

                        int.TryParse(e.GetAttribute("ID"), out channelData.ID);
                        channelData.nameChannel = e.GetAttribute("namechannel");
                        int.TryParse(e.GetAttribute("msgtype"), out channelData.msgType);
                        int.TryParse(e.GetAttribute("trig_mode"), out channelData.trig_mode);
                        int.TryParse(e.GetAttribute("pollingtime"), out channelData.pollingTime);
                        int.TryParse(e.GetAttribute("offset"), out channelData.readOffset);
                        int.TryParse(e.GetAttribute("length"), out channelData.readLength);

                        channelData.trigger = e.GetAttribute("trigger_offset");
                        string[] trigoffset = e.GetAttribute("triggeroffsetkey").Split('m');
                        channelData.offsetkey[0] = trigoffset[0];
                        trigoffset[1].Substring(0, 2);
                        channelData.offsetkey[1] = trigoffset[1].Substring(0, 2);
                        channelData.offsetkey[2] = trigoffset[1].Substring(2);
                        channelData.error        = e.GetAttribute("error_offset");
                        int.TryParse(e.GetAttribute("channelstartaddr"), out channelData.curChannelAddr);
                        int.TryParse(e.GetAttribute("channellength"), out channelData.curChannelLength);
                        //int.TryParse(e.GetAttribute("writeoffset"), out channelData.writeOffset);
                        //int.TryParse(e.GetAttribute("writelength"), out channelData.writeLength);



                        channelData.note = e.GetAttribute("note");
                        int.TryParse(e.GetAttribute("edit"), out channelData.edit);
                        deviceData.modbusChannelList.Add(channelData);
                    }


                    data.modbusDeviceList.Add(deviceData);
                }

                masterManage.add(data);//添加进xml
                mastermanege1 = masterManage;
            }
        }
示例#9
0
        //ttttttttttttttttttttttttttttttt
        //ttest
        private void button_add_Click(object sender, EventArgs e)
        {
            // 动态添加创建数组刷新
            //C: \Users\Public\Documents\MULTIPROG\Projects\ttt13579\DT\datatype
            // 从文件中读取并显示每行

            //string fullName = UserControl1.multiprogApp.ActiveProject.Path + "\\" + UserControl1.multiprogApp.ActiveProject.Name + "\\DT\\datatype\\datatype.TYB";
            //;
            //string path = UserControl1.multiprogApp.ActiveProject.FullName;

            //FileStream fs1 = new FileStream(fullName, FileMode.Open, FileAccess.Read);
            //StreamReader sr1 = new StreamReader(fs1, Encoding.Default);
            //string s;
            //s = sr1.ReadLine();
            //string strSave = "";

            //string compare1 = "TYPE";
            //string compare2 = "Task_Info_eCLR :";
            //string compare3 = "STRUCT";
            //string compare4 = "TaskStack : INT;";
            //string compare5 = "END_STRUCT;";
            //string compare6 = "END_TYPE";

            //int count = 0;
            //while (s != null)
            //{
            //    strSave += s + "\r\n";



            //    s = s.Trim();
            //    if (compare1 == s)
            //    {
            //        count = 0;
            //        count++;
            //    }
            //    else if (compare2 == s)
            //    {
            //        count++;
            //    }
            //    else if (compare3 == s)
            //    {
            //        count++;
            //    }
            //    else if (compare4 == s)
            //    {
            //        count++;
            //    }
            //    else if (compare5 == s)
            //    {
            //        count++;
            //    }
            //    else if (compare6 == s)
            //    {
            //        count++;

            //        if(count == 6)
            //        {
            //            int a = 5;
            //            a = 6;
            //            break;
            //        }
            //    }



            //    s = sr1.ReadLine();
            //}

            //fs1.Close();
            //sr1.Close();

            //FileStream fs = new FileStream(fullName, FileMode.OpenOrCreate);
            //fs.SetLength(0);
            //StreamWriter sw = new StreamWriter(fs, Encoding.Default);

            ////sw.WriteLine("TYPE\r\nnimade: ARRAY[0..20] OF BYTE;\r\nEND_TYPE");
            //sw.WriteLine(strSave);
            //sw.Close();
            //fs.Close();

            ////UserControl1.multiprogApp.ActiveProject.Close();
            ////UserControl1.multiprogApp.OpenProject(path, AdeConfirmRule.adeCrConfirm);
            //UserControl1.multiprogApp.ActiveProject.Compile(AdeCompileType.adeCtMake);



            //UserControl1.multiprogApp.ActiveProject.Compile(AdeCompileType.adeCtBuild);
            LocalPLC.ModbusServer.DataManager servermanage = null;
            serverdata.getservermanage(ref servermanage);
            LocalPLC.Base.xml.DataManageBase baseData = null;
            UC.getDataManager(ref baseData);
            int num = 0;

            foreach (string serialname in baseData.serialDic.Keys)
            {
                for (int k = 0; k < masterManage.modbusMastrList.Count; k++)
                {
                    if (masterManage.modbusMastrList[k].transformChannel == serialname)
                    {
                        num++;
                    }
                }
                for (int j = 0; j < servermanage.listServer.Count; j++)
                {
                    if (servermanage.listServer[j].dataDevice_.transformportdescribe == serialname)
                    {
                        num++;
                    }
                }
            }
            if (dataGridView1.RowCount >= utility.masterCount)
            {
                string err = string.Format("master最大个数是{0}", utility.masterCount);
                utility.PrintError(err);
                return;
            }
            if (num >= baseData.serialDic.Count)
            {
                string err = string.Format("串口已用完");
                utility.PrintError(err);
                return;
            }
            int row = dataGridView1.RowCount;

            dataGridView1.RowCount += 1;

            // Set the text for each button.
            int i = row;

            ModbusMasterData data = new ModbusMasterData();

            // for (int i = 0; i < dataGridView1.RowCount; i++)
            {
                dataGridView1.Rows[i].Cells["ID"].Value = row;
                data.ID = row;
                dataGridView1.Rows[i].Cells[columnConfig].Value = "..." /* + i.ToString()*/;
                dataGridView1.Rows[i].Cells[columnDetail].Value = "..." /* + i.ToString()*/;
                //data.device = new DeviceData();

                //masterManage.modbusMastrList.Add(data);

                masterManage.add(data);

                //utility.addIOGroups();
                mastermanege1 = masterManage;
                data.isready  = false;
                //refreshaddr();
            }
        }
示例#10
0
        public void saveJson(JsonTextWriter writer)
        {
            //添加modbusmaster节点
            ModbusMasterManage master = masterManage;

            if (master.modbusMastrList.Count > 0)
            {
                writer.WritePropertyName("mbserial_master");
                writer.WriteStartObject();                             //添加{  master节点
                writer.WritePropertyName("number");
                writer.WriteValue(masterManage.modbusMastrList.Count); //number
                writer.WritePropertyName("time_uint");
                writer.WriteValue("ms");                               //时间单位
                int index = 0;
                writer.WritePropertyName("conf");
                writer.WriteStartArray();                                    //[ master节点下conf数组
                for (int i = 0; i < masterManage.modbusMastrList.Count; i++) //遍历所有Client的集合
                {
                    ModbusMasterData data = masterManage.modbusMastrList.ElementAt(i);

                    writer.WriteStartObject();//{  master节点下device
                    writer.WritePropertyName("port");
                    if (data.transformChannel == "COM1")
                    {
                        writer.WriteValue("ser_port7");
                    }
                    else if (data.transformChannel == "COM2")
                    {
                        writer.WriteValue("ser_port1");
                    }
                    else if (data.transformChannel == "COM3")
                    {
                        writer.WriteValue("ser_port0");
                    }
                    else if (data.transformChannel == "COM4")
                    {
                        writer.WriteValue("ser_port2");
                    }
                    else if (data.transformChannel == "COM5")
                    {
                        writer.WriteValue("ser_port3");
                    }
                    else if (data.transformChannel == "COM6")
                    {
                        writer.WriteValue("ser_port8");
                    }
                    else
                    {
                        writer.WriteValue("");
                    }
                    writer.WritePropertyName("response_timeout");
                    writer.WriteValue(data.responseTimeout);
                    writer.WritePropertyName("packet_interval");
                    writer.WriteValue(data.packet_interval);
                    string mode = null;
                    if (data.transformMode == 0)
                    {
                        mode = "rtu";
                    }
                    else if (data.transformMode == 1)
                    {
                        mode = "ascii";
                    }
                    writer.WritePropertyName("mode");
                    writer.WriteValue(mode);
                    writer.WritePropertyName("dev_namestr");
                    writer.WriteValue("mbserial" + "_master" + data.ID);
                    writer.WritePropertyName("slave");
                    writer.WriteStartObject();//{  slave节点 从设备信息
                    writer.WritePropertyName("num");
                    writer.WriteValue(data.modbusDeviceList.Count);
                    if (i > 0)
                    {
                        index = i * masterManage.modbusMastrList[i - 1].modbusDeviceList.Count;
                    }
                    writer.WritePropertyName("conf");
                    writer.WriteStartArray();                             //[  slave节点conf
                    for (int j = 0; j < data.modbusDeviceList.Count; j++) //循环添加每个设备的各参数至
                    {
                        DeviceData dataDev = data.modbusDeviceList.ElementAt(j);

                        writer.WriteStartObject();//{  conf数组下节点,从设备信息
                        writer.WritePropertyName("slave_id");
                        try
                        {
                            int sid = Convert.ToInt32(dataDev.slaveAddr);
                        }
                        catch
                        {
                            return;
                        }
                        writer.WriteValue(Convert.ToInt32(dataDev.slaveAddr));


                        writer.WritePropertyName("timeout_cnt_max");
                        writer.WriteValue(dataDev.permitTimeoutCount);
                        writer.WritePropertyName("retry_interval");
                        writer.WriteValue(dataDev.reconnectInterval);
                        writer.WritePropertyName("io_range");
                        writer.WriteStartObject();                //{  conf数组下 iorange
                        writer.WritePropertyName("start");
                        writer.WriteValue(dataDev.curDeviceAddr); //io范围这块上位机设计方案中在master和client中并没有提到,需要确认
                        writer.WritePropertyName("bytes");
                        writer.WriteValue(dataDev.curDeviceLength);
                        writer.WriteEndObject();//}    conf数组下 iorange
                        writer.WritePropertyName("restart_offset");
                        writer.WriteValue(0);
                        writer.WritePropertyName("channel_cfg");
                        writer.WriteStartObject();//{  channel_cfg节点
                        writer.WritePropertyName("num");
                        writer.WriteValue(dataDev.modbusChannelList.Count);
                        writer.WritePropertyName("conf");
                        writer.WriteStartArray();                                 //[  channel_cfg节点下conf数组

                        for (int k = 0; k < dataDev.modbusChannelList.Count; k++) //循环添加通道至子设备节点下
                        {
                            ChannelData dataChannel = dataDev.modbusChannelList.ElementAt(k);
                            writer.WriteStartObject();//{  channel_cfg节点下conf数组中channel信息
                            writer.WritePropertyName("channel_id");
                            writer.WriteValue(dataChannel.ID);
                            writer.WritePropertyName("channel" + dataChannel.ID);
                            writer.WriteValue(dataChannel.nameChannel);
                            writer.WritePropertyName("msg_type");
                            writer.WriteValue(dataChannel.msgType);
                            writer.WritePropertyName("trig_mode");//trig_mode的含义??
                            writer.WriteValue(dataChannel.trig_mode);
                            writer.WritePropertyName("polling_time");
                            writer.WriteValue(dataChannel.pollingTime);
                            writer.WritePropertyName("offset");//偏移这块和我们上位机草图设计有一些出入,需要确认
                            writer.WriteValue(dataChannel.readOffset);
                            writer.WritePropertyName("quantity");
                            writer.WriteValue(dataChannel.readLength);
                            writer.WritePropertyName("io_offset");
                            writer.WriteValue(dataChannel.curChannelAddr + 3 - dataDev.curDeviceAddr);
                            writer.WritePropertyName("io_bytes");
                            writer.WriteValue(dataChannel.curChannelLength - 3);
                            writer.WritePropertyName("trigger_offset");
                            writer.WriteValue(dataChannel.curChannelAddr - dataDev.curDeviceAddr);
                            writer.WritePropertyName("error_offset");
                            writer.WriteValue(dataChannel.curChannelAddr + 1 - dataDev.curDeviceAddr);
                            writer.WritePropertyName("direction"); //direction参数的含义??
                            writer.WriteValue("in");
                            writer.WriteEndObject();               //} channel_cfg节点下conf数组中channel信息
                        }
                        writer.WriteEndArray();                    //] channel_cfg节点下conf数组
                        writer.WriteEndObject();                   //}  channel_cfg节点
                        writer.WriteEndObject();                   //}  conf数组下节点,从设备信息
                    }
                    writer.WriteEndArray();                        //]  slave节点conf
                    writer.WriteEndObject();                       //} slave节点 从设备信息
                    writer.WriteEndObject();                       //} client节点下device
                }
                writer.WriteEndArray();                            //] client节点下conf数组
                writer.WriteEndObject();                           //添加}  master节点
            }
        }