Example #1
0
    /// <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);
                    }
                }
            }
        }
    }
Example #2
0
    /// <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;
            }
        }
    }