public FormMelsec3E(NodeMelsecMc melsecMc = null) { InitializeComponent( ); Icon = Util.GetWinformICon( ); MelsecMc = melsecMc ?? new NodeMelsecMc( ); }
/// <summary> /// 实例化一个三菱的设备对象,从配置信息创建 /// </summary> /// <param name="element">配置信息</param> public DeviceMelsecMc(XElement element) { var nodeMelsec = new NodeMelsecMc(); nodeMelsec.LoadByXmlElement(element); LoadRequest(element); if (nodeMelsec.IsBinary) { protocol = 1; melsecMcNet = new MelsecMcNet(nodeMelsec.IpAddress, nodeMelsec.Port); melsecMcNet.NetworkNumber = nodeMelsec.NetworkNumber; melsecMcNet.NetworkStationNumber = nodeMelsec.NetworkStationNumber; melsecMcNet.ConnectTimeOut = nodeMelsec.ConnectTimeOut; ByteTransform = melsecMcNet.ByteTransform; ReadWriteDevice = melsecMcNet; UniqueId = melsecMcNet.ConnectionId; } else { melsecMcAscii = new MelsecMcAsciiNet(nodeMelsec.IpAddress, nodeMelsec.Port); melsecMcAscii.NetworkNumber = nodeMelsec.NetworkNumber; melsecMcAscii.NetworkStationNumber = nodeMelsec.NetworkStationNumber; melsecMcAscii.ConnectTimeOut = nodeMelsec.ConnectTimeOut; ByteTransform = melsecMcAscii.ByteTransform; ReadWriteDevice = melsecMcAscii; UniqueId = melsecMcAscii.ConnectionId; } TypeName = "三菱设备"; }
private void userButton1_Click(object sender, EventArgs e) { if (!IPAddress.TryParse(textBox3.Text, out IPAddress address)) { MessageBox.Show("Ip地址填写异常!"); return; } if (!int.TryParse(textBox4.Text, out int port)) { MessageBox.Show("端口号填写异常!"); return; } if (!byte.TryParse(textBox5.Text, out byte netWorkNumber)) { MessageBox.Show("网络号填写异常!"); return; } if (!byte.TryParse(textBox7.Text, out byte netWorkStationNumber)) { MessageBox.Show("网络站号填写异常!"); return; } if (!int.TryParse(textBox6.Text, out int timeOut)) { MessageBox.Show("超时时间填写异常!"); return; } MelsecMc = new NodeMelsecMc( ) { Name = textBox1.Text, Description = textBox2.Text, IpAddress = address.ToString( ), Port = port, NetworkNumber = netWorkNumber, NetworkStationNumber = netWorkStationNumber, ConnectTimeOut = timeOut, IsBinary = checkBox1.Checked }; DialogResult = DialogResult.OK; }
private IDeviceCore CreateNewByXml(XElement device) { int deviceType = int.Parse(device.Attribute("DeviceType").Value); if (deviceType == DeviceNode.ModbusTcpAlien) { return(new DeviceModbusTcpAlien(device)); } else if (deviceType == DeviceNode.ModbusTcpClient) { return(new DeviceModbusTcp(device)); } else if (deviceType == DeviceNode.MelsecMcQna3E) { NodeMelsecMc nodeMelsecMc = new NodeMelsecMc( ); nodeMelsecMc.LoadByXmlElement(device); if (nodeMelsecMc.IsBinary) { // 二进制通信 return(new DeviceMelsecBinary(device)); } else { // ASCII通讯 return(new DeviceMelsecAscii(device)); } } else if (deviceType == DeviceNode.Omron) { return(new DeviceOmron(device)); } else if (deviceType == DeviceNode.SimplifyNet) { return(new DeviceSimplifyNet(device)); } else if (deviceType == DeviceNode.Siemens) { return(new DeviceSiemens(device)); } else { return(null); } }
/// <summary> /// 默认的构造方法 /// </summary> /// <param name="dtu"></param> /// <param name="element"></param> public DeviceMelsecAscii(XElement element) { NodeMelsecMc nodeMelsecMc = new NodeMelsecMc( ); nodeMelsecMc.LoadByXmlElement(element); LoadRequest(element); melsecMcNet = new MelsecMcAsciiNet(nodeMelsecMc.IpAddress, nodeMelsecMc.Port); melsecMcNet.NetworkNumber = nodeMelsecMc.NetworkNumber; melsecMcNet.NetworkStationNumber = nodeMelsecMc.NetworkStationNumber; melsecMcNet.ConnectTimeOut = nodeMelsecMc.ConnectTimeOut; ByteTransform = melsecMcNet.ByteTransform; UniqueId = melsecMcNet.ConnectionId; TypeName = "三菱PLC设备"; }
private void TreeNodeRender(TreeNode treeNode, XElement element) { foreach (var item in element.Elements()) { if (item.Name == "NodeClass") { var node = new TreeNode(item.Attribute("Name").Value); node.ImageKey = "Class_489"; node.SelectedImageKey = "Class_489"; var nodeClass = new NodeClass(); nodeClass.LoadByXmlElement(item); node.Tag = nodeClass; treeNode.Nodes.Add(node); TreeNodeRender(node, item); } else if (item.Name == "DeviceNode") { var type = int.Parse(item.Attribute("DeviceType").Value); var deviceNode = new TreeNode(item.Attribute("Name").Value); if (type == DeviceNode.ModbusTcpClient) { deviceNode.ImageKey = "Module_648"; deviceNode.SelectedImageKey = "Module_648"; var modbusNode = new NodeModbusTcpClient(); modbusNode.LoadByXmlElement(item); deviceNode.Tag = modbusNode; } else if (type == DeviceNode.ModbusTcpAlien) { deviceNode.ImageKey = "Module_648"; deviceNode.SelectedImageKey = "Module_648"; var modbusAlien = new NodeModbusTcpAline(); modbusAlien.LoadByXmlElement(item); deviceNode.Tag = modbusAlien; } else if (type == DeviceNode.MelsecMcQna3E) { deviceNode.ImageKey = "Enum_582"; deviceNode.SelectedImageKey = "Enum_582"; var node = new NodeMelsecMc(); node.LoadByXmlElement(item); deviceNode.Tag = node; } else if (type == DeviceNode.Siemens) { deviceNode.ImageKey = "Event_594"; deviceNode.SelectedImageKey = "Event_594"; var node = new NodeSiemens(); node.LoadByXmlElement(item); deviceNode.Tag = node; } else if (type == DeviceNode.DeviceNone) { deviceNode.ImageKey = "Method_636"; deviceNode.SelectedImageKey = "Method_636"; var node = new NodeEmpty(); node.LoadByXmlElement(item); deviceNode.Tag = node; } else if (type == DeviceNode.Omron) { deviceNode.ImageKey = "HotSpot_10548_color"; deviceNode.SelectedImageKey = "HotSpot_10548_color"; var node = new NodeOmron(); node.LoadByXmlElement(item); deviceNode.Tag = node; } treeNode.Nodes.Add(deviceNode); foreach (var request in item.Elements("DeviceRequest")) { var deviceRequest = new DeviceRequest(); deviceRequest.LoadByXmlElement(request); var parseCode = deviceRequest.PraseRegularCode; if (regularkeyValuePairs.ContainsKey(parseCode)) { foreach (var regularNodeItem in regularkeyValuePairs[parseCode]) { var treeNodeRegular = new TreeNode(regularNodeItem.Name); treeNodeRegular.ImageKey = "Operator_660"; treeNodeRegular.SelectedImageKey = "Operator_660"; treeNodeRegular.Tag = regularNodeItem; deviceNode.Nodes.Add(treeNodeRegular); } } } } else if (item.Name == "ServerNode") { var type = int.Parse(item.Attribute("ServerType").Value); if (type == ServerNode.ModbusServer) { var node = new TreeNode(item.Attribute("Name").Value); node.ImageKey = "server_Local_16xLG"; node.SelectedImageKey = "server_Local_16xLG"; var nodeClass = new NodeModbusServer(); nodeClass.LoadByXmlElement(item); node.Tag = nodeClass; treeNode.Nodes.Add(node); } else if (type == ServerNode.AlienServer) { var node = new TreeNode(item.Attribute("Name").Value); node.ImageKey = "server_Local_16xLG"; node.SelectedImageKey = "server_Local_16xLG"; var nodeClass = new AlienServerNode(); nodeClass.LoadByXmlElement(item); node.Tag = nodeClass; treeNode.Nodes.Add(node); TreeNodeRender(node, item); } } else if (item.Name == "RegularNode") { var node = new TreeNode(item.Attribute("Name").Value); node.ImageKey = "usbcontroller"; node.SelectedImageKey = "usbcontroller"; var nodeClass = new RegularNode(); nodeClass.LoadByXmlElement(item); node.Tag = nodeClass; treeNode.Nodes.Add(node); foreach (var regularItemXml in item.Elements("RegularItemNode")) { var treeNodeRegular = new TreeNode(regularItemXml.Attribute("Name").Value); treeNodeRegular.ImageKey = "Operator_660"; treeNodeRegular.SelectedImageKey = "Operator_660"; var regularItemNode = new RegularItemNode(); regularItemNode.LoadByXmlElement(regularItemXml); treeNodeRegular.Tag = regularItemNode; node.Nodes.Add(treeNodeRegular); } } } }
private void TreeNodeRender(TreeNode treeNode, XElement element) { foreach (XElement item in element.Elements( )) { if (item.Name == "NodeClass") { TreeNode node = new TreeNode(item.Attribute("Name").Value); node.ImageKey = "Class_489"; node.SelectedImageKey = "Class_489"; NodeClass nodeClass = new NodeClass( ); nodeClass.LoadByXmlElement(item); node.Tag = nodeClass; treeNode.Nodes.Add(node); TreeNodeRender(node, item); } else if (item.Name == "DeviceNode") { int type = int.Parse(item.Attribute("DeviceType").Value); TreeNode deviceNode = new TreeNode(item.Attribute("Name").Value); if (type == DeviceNode.ModbusTcpClient) { deviceNode.ImageKey = "Module_648"; deviceNode.SelectedImageKey = "Module_648"; NodeModbusTcpClient modbusNode = new NodeModbusTcpClient( ); modbusNode.LoadByXmlElement(item); deviceNode.Tag = modbusNode; } else if (type == DeviceNode.ModbusTcpAlien) { deviceNode.ImageKey = "Module_648"; deviceNode.SelectedImageKey = "Module_648"; NodeModbusTcpAline modbusAlien = new NodeModbusTcpAline( ); modbusAlien.LoadByXmlElement(item); deviceNode.Tag = modbusAlien; } else if (type == DeviceNode.MelsecMcQna3E) { deviceNode.ImageKey = "Enum_582"; deviceNode.SelectedImageKey = "Enum_582"; NodeMelsecMc node = new NodeMelsecMc( ); node.LoadByXmlElement(item); deviceNode.Tag = node; } else if (type == DeviceNode.Siemens) { deviceNode.ImageKey = "Event_594"; deviceNode.SelectedImageKey = "Event_594"; NodeSiemens node = new NodeSiemens( ); node.LoadByXmlElement(item); deviceNode.Tag = node; } else if (type == DeviceNode.DeviceNone) { deviceNode.ImageKey = "Method_636"; deviceNode.SelectedImageKey = "Method_636"; NodeEmpty node = new NodeEmpty( ); node.LoadByXmlElement(item); deviceNode.Tag = node; } else if (type == DeviceNode.Omron) { deviceNode.ImageKey = "HotSpot_10548_color"; deviceNode.SelectedImageKey = "HotSpot_10548_color"; NodeOmron node = new NodeOmron( ); node.LoadByXmlElement(item); deviceNode.Tag = node; } else if (type == DeviceNode.SimplifyNet) { deviceNode.ImageKey = "FlagRed_16x"; deviceNode.SelectedImageKey = "FlagRed_16x"; NodeSimplifyNet node = new NodeSimplifyNet( ); node.LoadByXmlElement(item); deviceNode.Tag = node; } treeNode.Nodes.Add(deviceNode); foreach (XElement request in item.Elements("DeviceRequest")) { TreeNode nodeRequest = new TreeNode(request.Attribute("Name").Value); nodeRequest.ImageKey = "usbcontroller"; nodeRequest.SelectedImageKey = "usbcontroller"; DeviceRequest deviceRequest = new DeviceRequest( ); deviceRequest.LoadByXmlElement(request); nodeRequest.Tag = deviceRequest; deviceNode.Nodes.Add(nodeRequest); } } else if (item.Name == "AlienNode") { TreeNode node = new TreeNode(item.Attribute("Name").Value); node.ImageKey = "server_Local_16xLG"; node.SelectedImageKey = "server_Local_16xLG"; AlienNode nodeClass = new AlienNode( ); nodeClass.LoadByXmlElement(item); node.Tag = nodeClass; treeNode.Nodes.Add(node); TreeNodeRender(node, item); } else if (item.Name == "ModbusServer") { TreeNode node = new TreeNode(item.Attribute("Name").Value); node.ImageKey = "server_Local_16xLG"; node.SelectedImageKey = "server_Local_16xLG"; NodeModbusServer nodeClass = new NodeModbusServer( ); nodeClass.LoadByXmlElement(item); node.Tag = nodeClass; treeNode.Nodes.Add(node); TreeNodeRender(node, item); } } }