/// <summary> /// 获取当前模式下 DMX 通道信息 /// </summary> /// <param name="dmxChannelsNode">DMX Channels 节点</param> /// <param name="modeData">DMX Mode 对象</param> /// <param name="data">GDTF Data 对象</param> private static void GetDmxModeChannels(XmlNode dmxChannelsNode, GDTF_DmxModesData modeData, GDTF_Data data) { // 如果 DMXChannels 节点下存在 DMXChannel if (dmxChannelsNode.HasChildNodes) { foreach (XmlNode dmxChannel in dmxChannelsNode) { // 如果 DMXChannel 下存在子节点 if (dmxChannel.HasChildNodes) { // 如果当前 DMXChannel 下存在 LogicalChannel 节点 XmlNode logicalChannelNode = FindChildNode(dmxChannel, "LogicalChannel"); if (logicalChannelNode != null) { // 创建 DMXChannelData 对象 GDTF_DmxChannel channel = new GDTF_DmxChannel() { dmxBreak = Convert.ToInt32(GetNodeAttribute(dmxChannel, "DMXBreak")), dmxBit = GetDmxValueResolution(GetNodeAttribute(dmxChannel, "Default")), deafault = GetDmxValue(GetNodeAttribute(dmxChannel, "Default")), geometry = GetNodeAttribute(dmxChannel, "Geometry"), offset = XmlSplitToIntArray(GetNodeAttribute(dmxChannel, "Offset")) }; // 为该 DMX Mode 添加 DMXChannel modeData.channelsData.Add(channel); GetDmxLogicalChannel(dmxChannel, channel, data); } } } } }
/// <summary> /// 获取当前模式下 LogicalChannel 信息 /// </summary> /// <param name="dmxChannelNode">DmxChannel 节点</param> /// <param name="channel">DMXChannel 对象</param> /// <param name="data">GDTF_Data 对象</param> private static void GetDmxLogicalChannel(XmlNode dmxChannelNode, GDTF_DmxChannel channel, GDTF_Data data) { // 如果 DMXChannel 节点下存在 LogicalChannel 节点 if (dmxChannelNode.HasChildNodes) { XmlNode logicalChannelNode = dmxChannelNode.FirstChild; if (logicalChannelNode != null) { string attributeName = GetNodeAttribute(logicalChannelNode, "Attribute"); GDTF_DmxLogicalChannel logicalChannel = new GDTF_DmxLogicalChannel { attribute = data.attributeDefinitions.attributes[attributeName] }; GetDmxChannelFuctions(logicalChannelNode, logicalChannel, data); channel.logicalChannel = logicalChannel; } } }