Ejemplo n.º 1
0
        public static void sendMsg(System.IO.Ports.SerialPort port, DMXProMsgLabel label, byte[] data)
        {
            if (!port.IsOpen)
            {
                return;
            }

            List <byte> temp = new List <byte>();

            temp.Add(msgStart);
            temp.Add((byte)label);
            temp.Add((byte)(data.Length & 0xff));
            temp.Add((byte)(data.Length >> 8));
            temp.AddRange(data);
            temp.Add(msgEnd);
            port.Write(temp.ToArray(), 0, temp.Count);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// construct any message
        /// this is a helper function and should not be called directly unless implementing a new type of message
        /// </summary>
        /// <param name="label">the enumeration label of the message you are sending</param>
        /// <param name="data">and pertinent data the message type requires</param>
        public void sendMsg(DMXProMsgLabel label, byte [] data)
        {
            if (!m_port.IsOpen)
            {
                return;
            }

            List <byte> temp = new List <byte>();

            temp.Add(msgStart);
            temp.Add((byte)label);
            temp.Add((byte)(data.Length & 0xff));
            temp.Add((byte)(data.Length >> 8));
            temp.AddRange(data);
            temp.Add(msgEnd);
            m_port.Write(temp.ToArray(), 0, temp.Count);
        }
Ejemplo n.º 3
0
 public DMXMessage(DMXProMsgLabel t, byte[] m)
 {
     message = m;
     type    = t;
 }
Ejemplo n.º 4
0
        public void decodeMessage(DMXProMsgLabel label, byte [] msg)
        {
            int len;

            switch (label)
            {
            case DMXProMsgLabel.GET_WIDGET_PARAMETERS_REPLY:     //3
                if (msg.Length < 5)
                {
                    return;
                }
                UInt16 Firmware        = (UInt16)(msg[0] | (msg[1] << 8));
                double DMXOutBreakTime = 10.67 * msg[2];
                double DMXOutMarkTime  = 10.67 * msg[3];
                int    DMXOutRate      = msg[4];

                len = msg.Length - 5;
                byte[] UserConfigData = new byte[len];
                Array.Copy(msg, 5, UserConfigData, 0, len);
                if (WidgetParametersReceived != null)
                {
                    WidgetParametersReceived(this, new WidgetParameterArgs(Firmware, DMXOutBreakTime, DMXOutMarkTime, DMXOutRate, UserConfigData));
                }
                break;

            case DMXProMsgLabel.GET_WIDGET_SERIAL_NUMBER_REPLY:     //10
                UInt32 SerialNumber;
                SerialNumber = (UInt32)(msg[0] | (msg[1] << 8) | (msg[2] << 16) | (msg[3] << 24));
                if (SerialNumberReceived != null)
                {
                    SerialNumberReceived(this, new SerialNumberArgs(SerialNumber));
                }
                break;

            case DMXProMsgLabel.PROGRAM_FLASH_PAGE_REPLY:
                bool   success;
                string result = Encoding.UTF8.GetString(msg, 0, 4);
                if (result == "TRUE")
                {
                    success = true;
                }
                else if (result == "FALSE")
                {
                    success = false;
                }
                else
                {
                    throw new Exception(string.Format("Program Flash Page Responded with neither TRUE nor FALSE({0})", result));
                }

                if (FlashReplyRecieved != null)
                {
                    FlashReplyRecieved(this, new FlashReplyArgs(success));
                }
                break;

            case DMXProMsgLabel.RECEIVED_DMX_CHANGE_OF_STATE_PACKET:
                throw new NotImplementedException("Received DMX Change of State Packet is more effort than i want to put in at 12:26");

            //break;
            case DMXProMsgLabel.RECEIVED_DMX_PACKET:
                /*The Widget sends this message to the PC unsolicited,
                 * whenever the Widget receives a DMX or
                 * RDM packet from the DMX port,
                 * and the Receive DMX on Change mode is 'Send always'.*/
                bool valid = (bool)((msg[0] & 0x01) == 1);
                len = msg.Length - 1;
                byte[] levels = new byte[len];
                Array.Copy(msg, 1, levels, 0, len);
                if (DMXLevelsRecieved != null)
                {
                    DMXLevelsRecieved(this, new DMXLevelArgs(valid, levels));
                }
                break;
            }
        }
Ejemplo n.º 5
0
 public DMXMessage(DMXProMsgLabel t, byte[] m)
 {
     message = m;
     type = t;
 }
Ejemplo n.º 6
0
        /// <summary>
        /// construct any message
        /// this is a helper function and should not be called directly unless implementing a new type of message
        /// </summary>
        /// <param name="label">the enumeration label of the message you are sending</param>
        /// <param name="data">and pertinent data the message type requires</param>
        public void sendMsg(DMXProMsgLabel label,byte []data)
        {
            if (!m_port.IsOpen) return;

            List<byte> temp = new List<byte>();
            temp.Add(msgStart);
            temp.Add((byte)label);
            temp.Add((byte)(data.Length & 0xff));
            temp.Add((byte)(data.Length >>8));
            temp.AddRange(data);
            temp.Add(msgEnd);
            m_port.Write(temp.ToArray(), 0, temp.Count);
        }
Ejemplo n.º 7
0
        public void decodeMessage(DMXProMsgLabel label, byte [] msg)
        {
            int len;
            switch (label)
            {
                case DMXProMsgLabel.GET_WIDGET_PARAMETERS_REPLY: //3
                    if (msg.Length < 5) return;
                    UInt16 Firmware = (UInt16)(msg[0] | (msg[1] << 8));
                    double DMXOutBreakTime = 10.67 * msg[2];
                    double DMXOutMarkTime = 10.67 * msg[3];
                    int DMXOutRate = msg[4];

                    len = msg.Length - 5;
                    byte[] UserConfigData = new byte[len];
                    Array.Copy(msg, 5, UserConfigData, 0, len);
                    if (WidgetParametersReceived != null) WidgetParametersReceived(this, new WidgetParameterArgs(Firmware, DMXOutBreakTime, DMXOutMarkTime,DMXOutRate, UserConfigData));
                    break;
                case DMXProMsgLabel.GET_WIDGET_SERIAL_NUMBER_REPLY: //10
                    UInt32 SerialNumber;
                    SerialNumber = (UInt32)(msg[0] | (msg[1] << 8) | (msg[2] << 16) | (msg[3] << 24));
                    if (SerialNumberReceived != null) SerialNumberReceived(this, new SerialNumberArgs(SerialNumber));
                    break;
                case DMXProMsgLabel.PROGRAM_FLASH_PAGE_REPLY:
                    bool success;
                    string result = Encoding.UTF8.GetString(msg, 0, 4);
                    if (result == "TRUE") success = true;
                    else if (result == "FALSE") success = false;
                    else throw new Exception(string.Format("Program Flash Page Responded with neither TRUE nor FALSE({0})",result ));

                    if (FlashReplyRecieved != null) FlashReplyRecieved(this, new FlashReplyArgs(success));
                    break;
                case DMXProMsgLabel.RECEIVED_DMX_CHANGE_OF_STATE_PACKET:
                    throw new NotImplementedException("Received DMX Change of State Packet is more effort than i want to put in at 12:26");
                    //break;
                case DMXProMsgLabel.RECEIVED_DMX_PACKET:
                    /*The Widget sends this message to the PC unsolicited,
                     * whenever the Widget receives a DMX or
                     * RDM packet from the DMX port,
                     * and the Receive DMX on Change mode is 'Send always'.*/
                    bool valid = (bool)((msg[0] & 0x01) == 1);
                    len = msg.Length - 1;
                    byte[] levels = new byte[len];
                    Array.Copy(msg, 1, levels, 0, len);
                    if (DMXLevelsRecieved != null) DMXLevelsRecieved(this, new DMXLevelArgs(valid, levels));
                    break;

            }
        }
Ejemplo n.º 8
0
        public static void sendMsg(System.IO.Ports.SerialPort port, DMXProMsgLabel label, byte[] data)
        {
            if (!port.IsOpen) return;

            List<byte> temp = new List<byte>();
            temp.Add(msgStart);
            temp.Add((byte)label);
            temp.Add((byte)(data.Length & 0xff));
            temp.Add((byte)(data.Length >> 8));
            temp.AddRange(data);
            temp.Add(msgEnd);
            port.Write(temp.ToArray(), 0, temp.Count);
        }