コード例 #1
0
 /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
 /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1
 /// housecode per command is supported.</param>
 /// <param name="X10Command">X10 command sent/received</param>
 /// <param name="Brightness">Brightness, range 0-100%</param>
 /// <param name="data1">Extended data byte 1, range 0-255</param>
 /// <param name="data2">Extended data byte 2, range 0-255</param>
 /// <param name="ResultCode">Resultcode of X10 commands send, 0 if success, 1 if failure.</param>
 public X10EventArgs(string Devices, X10_COMMANDS X10Command, byte Brightness, byte data1, byte data2, int ResultCode)
 {
     mDevices    = Devices;
     mX10Command = X10Command;
     mBrightness = Brightness;
     mData1      = data1;
     mData2      = data2;
     mResultCode = ResultCode;
 }
コード例 #2
0
        private void AsyncSendX10(string Devices, X10_COMMANDS X10Command, byte Brightness, byte data1, byte data2)
        {
            X10Message x10c = new X10Message(Devices, X10Command, Brightness, data1, data2);

            lock (arX10ToSend.SyncRoot)
            {
                arX10ToSend.Add(x10c);
            }
            RunSendX10();
        }
コード例 #3
0
ファイル: XPLCM11.cs プロジェクト: aguirron/xplproject
        private string X10Enum2String(X10_COMMANDS cmd)
        {
            string command;

            switch ((X10_COMMANDS)cmd)
            {
            case X10_COMMANDS.ALL_LIGHTS_OFF: command = "ALL_LIGHTS_OFF"; break;

            case X10_COMMANDS.ALL_LIGHTS_ON: command = "ALL_LIGHTS_ON"; break;

            case X10_COMMANDS.ON: command = "ON"; break;

            case X10_COMMANDS.OFF: command = "OFF"; break;

            case X10_COMMANDS.DIM: command = "DIM"; break;

            case X10_COMMANDS.BRIGHT: command = "BRIGHT"; break;

            case X10_COMMANDS.ALL_UNITS_OFF: command = "ALL_UNITS_OFF"; break;

            case X10_COMMANDS.EXTENDED: command = "EXTENDED"; break;

            case X10_COMMANDS.HAIL_REQ: command = "HAIL_REQ"; break;

            case X10_COMMANDS.HAIL_ACK: command = "HAIL_ACK"; break;

            case X10_COMMANDS.PRESET_DIM1: command = "PREDIM1"; break;

            case X10_COMMANDS.PRESET_DIM2: command = "PREDIM2"; break;

            case X10_COMMANDS.EXTENDED_DATA: command = "EXTENDED_DATA"; break;

            case X10_COMMANDS.STATUS_ON: command = "STATUS_ON"; break;

            case X10_COMMANDS.STATUS_OFF: command = "STATUS_OFF"; break;

            case X10_COMMANDS.STATUS_REQUEST: command = "STATUS"; break;

            default: command = "unknown"; break;
            }
            return(command);
        }
コード例 #4
0
            /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
            /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1
            /// housecode per command is supported.</param>
            /// <param name="X10Command">X10 command to be sent</param>
            /// <param name="Brightness">Brightness, range 0-100%</param>
            /// <param name="data1">Extended data byte 1, range 0-255</param>
            /// <param name="data2">Extended data byte 2, range 0-255</param>
            public X10Message(string Devices, X10_COMMANDS X10Command, byte Brightness, byte data1, byte data2)
            {
                mDevices0  = Devices;
                mHouseCode = Convert.ToChar(Devices.Substring(0, 1).ToUpper());

                string[] tmp = Devices.Substring(1).ToUpper().Split(',');
                mDevices = new byte[tmp.Length];
                for (int i = 0; i < tmp.Length; i++)
                {
                    mDevices[i] = Convert.ToByte(tmp[i]);
                }

                mX10Command    = X10Command;
                mBrightness    = (byte)Math.Floor((int)Brightness * 0.22);
                mBrightness100 = Brightness;
                mData1         = data1;
                mData2         = data2;
                mInRetryCount  = 0;
                mInCollision   = false;
            }
コード例 #5
0
ファイル: X10Comm.cs プロジェクト: ErykB2000/xplproject
 /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
 /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1 
 /// housecode per command is supported.</param>
 /// <param name="X10Command">X10 command sent/received</param>
 /// <param name="Brightness">Brightness, range 0-100%</param>
 /// <param name="data1">Extended data byte 1, range 0-255</param>
 /// <param name="data2">Extended data byte 2, range 0-255</param>
 /// <param name="ResultCode">Resultcode of X10 commands send, 0 if success, 1 if failure.</param>
 public X10EventArgs(string Devices, X10_COMMANDS X10Command, byte Brightness, byte data1, byte data2, int ResultCode)
 {
     mDevices = Devices;
     mX10Command = X10Command;
     mBrightness = Brightness;
     mData1 = data1;
     mData2 = data2;
     mResultCode = ResultCode;
 }
コード例 #6
0
 /// <summary>Enqueues an X10 command for transmission</summary>
 /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
 /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1
 /// housecode per command is supported.</param>
 /// <param name="X10Command">X10 command to be sent</param>
 /// <param name="data1">Extended data byte 1, range 0-255</param>
 /// <param name="data2">Extended data byte 2, range 0-255</param>
 public void AsyncSendX10(string Devices, X10_COMMANDS X10Command, byte data1, byte data2)
 {
     AsyncSendX10(Devices, X10Command, 0, data1, data2);
 }
コード例 #7
0
 /// <summary>Enqueues an X10 command for transmission</summary>
 /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
 /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1
 /// housecode per command is supported.</param>
 /// <param name="X10Command">X10 command to be sent</param>
 /// <param name="Brightness">Brightness, range 0-100%</param>
 public void AsyncSendX10(string Devices, X10_COMMANDS X10Command, byte Brightness)
 {
     AsyncSendX10(Devices, X10Command, Brightness, 0, 0);
 }
コード例 #8
0
 /// <summary>Enqueues an X10 command for transmission</summary>
 /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
 /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1
 /// housecode per command is supported.</param>
 /// <param name="X10Command">X10 command to be sent</param>
 public void AsyncSendX10(string Devices, X10_COMMANDS X10Command)
 {
     AsyncSendX10(Devices, X10Command, 0, 0, 0);
 }
コード例 #9
0
 /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
 /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1
 /// housecode per command is supported.</param>
 /// <param name="X10Command">X10 command to be sent</param>
 /// <param name="Brightness">Brightness, range 0-100%</param>
 public X10Message(string Devices, X10_COMMANDS X10Command, byte Brightness)
     : this(Devices, X10Command, Brightness, 0, 0)
 {
 }
コード例 #10
0
ファイル: X10Comm.cs プロジェクト: ErykB2000/xplproject
 /// <summary>Enqueues an X10 command for transmission</summary>
 /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
 /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1 
 /// housecode per command is supported.</param>
 /// <param name="X10Command">X10 command to be sent</param>
 /// <param name="Brightness">Brightness, range 0-100%</param>
 public void AsyncSendX10(string Devices, X10_COMMANDS X10Command, byte Brightness)
 {
     AsyncSendX10(Devices, X10Command, Brightness, 0, 0);
 }
コード例 #11
0
ファイル: X10Comm.cs プロジェクト: ErykB2000/xplproject
 /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
 /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1 
 /// housecode per command is supported.</param>
 /// <param name="X10Command">X10 command sent/received</param>
 /// <param name="Brightness">Brightness, range 0-100%</param>
 /// <param name="data1">Extended data byte 1, range 0-255</param>
 /// <param name="data2">Extended data byte 2, range 0-255</param>
 public X10EventArgs(string Devices, X10_COMMANDS X10Command, byte Brightness, byte data1, byte data2)
     : this(Devices, X10Command, Brightness, data1, data2, 0)
 {
 }
コード例 #12
0
 /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
 /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1
 /// housecode per command is supported.</param>
 /// <param name="X10Command">X10 command sent/received</param>
 /// <param name="Brightness">Brightness, range 0-100%</param>
 /// <param name="data1">Extended data byte 1, range 0-255</param>
 /// <param name="data2">Extended data byte 2, range 0-255</param>
 public X10EventArgs(string Devices, X10_COMMANDS X10Command, byte Brightness, byte data1, byte data2) : this(Devices, X10Command, Brightness, data1, data2, 0)
 {
 }
コード例 #13
0
ファイル: X10Comm.cs プロジェクト: ErykB2000/xplproject
            /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
            /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1 
            /// housecode per command is supported.</param>
            /// <param name="X10Command">X10 command to be sent</param>
            /// <param name="Brightness">Brightness, range 0-100%</param>
            /// <param name="data1">Extended data byte 1, range 0-255</param>
            /// <param name="data2">Extended data byte 2, range 0-255</param>
            public X10Message(string Devices, X10_COMMANDS X10Command, byte Brightness, byte data1, byte data2)
            {
                mDevices0 = Devices;
                mHouseCode = Convert.ToChar(Devices.Substring(0,1).ToUpper());

                string[] tmp = Devices.Substring(1).ToUpper().Split(',');
                mDevices = new byte[tmp.Length];
                for (int i=0; i<tmp.Length; i++)
                    mDevices[i] = Convert.ToByte(tmp[i]);

                mX10Command = X10Command;
                mBrightness = (byte) Math.Floor((int)Brightness * 0.22);
                mBrightness100 = Brightness;
                mData1 = data1;
                mData2 = data2;
                mInRetryCount = 0;
                mInCollision = false;
            }
コード例 #14
0
ファイル: X10Comm.cs プロジェクト: ErykB2000/xplproject
 /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
 /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1 
 /// housecode per command is supported.</param>
 /// <param name="X10Command">X10 command to be sent</param>
 /// <param name="Brightness">Brightness, range 0-100%</param>
 public X10Message(string Devices, X10_COMMANDS X10Command, byte Brightness)
     : this(Devices, X10Command, Brightness, 0, 0)
 {
 }
コード例 #15
0
ファイル: X10Comm.cs プロジェクト: ErykB2000/xplproject
 /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
 /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1 
 /// housecode per command is supported.</param>
 /// <param name="X10Command">X10 command to be sent</param>
 public X10Message(string Devices, X10_COMMANDS X10Command)
     : this(Devices, X10Command, 0, 0, 0)
 {
 }
コード例 #16
0
ファイル: X10Comm.cs プロジェクト: ErykB2000/xplproject
 private void AsyncSendX10(string Devices, X10_COMMANDS X10Command, byte Brightness, byte data1, byte data2)
 {
     X10Message x10c = new X10Message(Devices, X10Command, Brightness, data1, data2);
     lock(arX10ToSend.SyncRoot)
     {
         arX10ToSend.Add(x10c);
     }
     RunSendX10();
 }
コード例 #17
0
ファイル: X10Comm.cs プロジェクト: ErykB2000/xplproject
 /// <summary>Enqueues an X10 command for transmission</summary>
 /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
 /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1 
 /// housecode per command is supported.</param>
 /// <param name="X10Command">X10 command to be sent</param>
 /// <param name="data1">Extended data byte 1, range 0-255</param>
 /// <param name="data2">Extended data byte 2, range 0-255</param>
 public void AsyncSendX10(string Devices, X10_COMMANDS X10Command, byte data1, byte data2)
 {
     AsyncSendX10(Devices, X10Command, 0, data1, data2);
 }
コード例 #18
0
ファイル: XPLCM11.cs プロジェクト: ErykB2000/xplproject
 private string X10Enum2String(X10_COMMANDS cmd)
 {
     string command;
     switch ((X10_COMMANDS) cmd)
     {
         case X10_COMMANDS.ALL_LIGHTS_OFF: command = "ALL_LIGHTS_OFF"; break;
         case X10_COMMANDS.ALL_LIGHTS_ON: command = "ALL_LIGHTS_ON"; break;
         case X10_COMMANDS.ON: command = "ON"; break;
         case X10_COMMANDS.OFF: command = "OFF"; break;
         case X10_COMMANDS.DIM: command = "DIM"; break;
         case X10_COMMANDS.BRIGHT: command = "BRIGHT"; break;
         case X10_COMMANDS.ALL_UNITS_OFF: command = "ALL_UNITS_OFF"; break;
         case X10_COMMANDS.EXTENDED: command = "EXTENDED"; break;
         case X10_COMMANDS.HAIL_REQ: command = "HAIL_REQ"; break;
         case X10_COMMANDS.HAIL_ACK: command = "HAIL_ACK"; break;
         case X10_COMMANDS.PRESET_DIM1: command = "PREDIM1"; break;
         case X10_COMMANDS.PRESET_DIM2: command = "PREDIM2"; break;
         case X10_COMMANDS.EXTENDED_DATA: command = "EXTENDED_DATA"; break;
         case X10_COMMANDS.STATUS_ON: command = "STATUS_ON"; break;
         case X10_COMMANDS.STATUS_OFF: command = "STATUS_OFF"; break;
         case X10_COMMANDS.STATUS_REQUEST: command = "STATUS"; break;
         default: command = "unknown"; break;
     }
     return command;
 }
コード例 #19
0
 /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
 /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1
 /// housecode per command is supported.</param>
 /// <param name="X10Command">X10 command to be sent</param>
 public X10Message(string Devices, X10_COMMANDS X10Command)
     : this(Devices, X10Command, 0, 0, 0)
 {
 }
コード例 #20
0
ファイル: XPLCM11.cs プロジェクト: aguirron/xplproject
        private void xL_XplMessageReceived(object sender, xPLDevice.xPLEventArgs e)
        {
            try
            {
                if (e.XplMsg.MsgType == xPL_Base.xPLMessageTypeEnum.Command)     // only act on CMD, no longer on TRIG
                {
                    X10_COMMANDS command = 0;
                    string       scmd    = e.XplMsg.KeyValueList["command"].ToUpper();

                    switch (scmd)
                    {
                    case "ALL_LIGHTS_OFF": command = X10_COMMANDS.ALL_LIGHTS_OFF; break;

                    case "ALL_LIGHTS_ON": command = X10_COMMANDS.ALL_LIGHTS_ON; break;

                    case "ON": command = X10_COMMANDS.ON; break;

                    case "OFF": command = X10_COMMANDS.OFF; break;

                    case "DIM": command = X10_COMMANDS.DIM; break;

                    case "BRIGHT": command = X10_COMMANDS.BRIGHT; break;

                    case "ALL_UNITS_OFF": command = X10_COMMANDS.ALL_UNITS_OFF; break;

                    case "EXTENDED": command = X10_COMMANDS.EXTENDED; break;

                    case "HAIL_REQ": command = X10_COMMANDS.HAIL_REQ; break;

                    case "HAIL_ACK": command = X10_COMMANDS.HAIL_ACK; break;

                    case "PREDIM1": command = X10_COMMANDS.PRESET_DIM1; break;

                    case "PREDIM2": command = X10_COMMANDS.PRESET_DIM2; break;

                    case "EXTENDED_DATA": command = X10_COMMANDS.EXTENDED_DATA; break;

                    case "STATUS_ON": command = X10_COMMANDS.STATUS_ON; break;

                    case "STATUS_OFF": command = X10_COMMANDS.STATUS_OFF; break;

                    case "STATUS": command = X10_COMMANDS.STATUS_REQUEST; break;

                    default: throw new Exception("Unknown x10 command received: " + scmd);
                    }

                    string alldevices = e.XplMsg.KeyValueList["device"];
                    if (alldevices.Length < 2)
                    {
                        throw new Exception("Invalid device(s): " + alldevices);
                    }

                    string[] ardev = alldevices.ToUpper().Split(',');
                    int      i     = 0;

                    //verify device addresses
                    while (i < ardev.Length)
                    {
                        if (ardev[i].Length < 2 || ardev[i].Length > 3)
                        {
                            throw new Exception("Invalid device: " + ardev[i]);
                        }

                        if (Convert.ToChar(ardev[i].Substring(0, 1)) < 'A' || Convert.ToChar(ardev[i].Substring(0, 1)) > 'P')
                        {
                            throw new Exception("Housecode out of range: " + ardev[i]);
                        }

                        try
                        {
                            int devicenr = Int32.Parse(ardev[i].Substring(1));
                            if (devicenr < 1 || devicenr > 16)
                            {
                                throw new Exception();
                            }
                        }
                        catch
                        {
                            throw new Exception("Devicecode out of range: " + ardev[i]);
                        }
                        i++;
                    }

                    //verify other attributes if applicable
                    byte level = 0;
                    byte data1 = 0;
                    byte data2 = 0;
                    if (command == X10_COMMANDS.BRIGHT || command == X10_COMMANDS.DIM || command == X10_COMMANDS.PRESET_DIM1 || command == X10_COMMANDS.PRESET_DIM2)
                    {
                        try
                        {
                            level = Byte.Parse(e.XplMsg.KeyValueList["level"]);
                            if (level < 0 || level > 100)
                            {
                                throw new Exception();
                            }
                        }
                        catch
                        {
                            throw new Exception("Level out of range: " + e.XplMsg.KeyValueList["level"]);
                        }
                    }

                    if (command == X10_COMMANDS.EXTENDED)
                    {
                        try
                        {
                            data1 = Byte.Parse(e.XplMsg.KeyValueList["data1"]);
                            data2 = Byte.Parse(e.XplMsg.KeyValueList["data2"]);
                            if (data1 < 0 || data1 > 255 || data2 < 0 || data2 > 255)
                            {
                                throw new Exception();
                            }
                        }
                        catch
                        {
                            throw new Exception("Extended data out of range: data1=" + e.XplMsg.KeyValueList["data1"] + " data2=" + e.XplMsg.KeyValueList["data2"]);
                        }
                    }

                    i = 0;
                    while (i < ardev.Length)
                    {
                        //group devices of the same housecode
                        string devices = ardev[i];
                        int    j       = i + 1;
                        while (j < ardev.Length && ardev[j].Substring(0, 1) == devices.Substring(0, 1))
                        {
                            devices += "," + ardev[j].Substring(1);
                            j++;
                        }
                        i = j;

                        if (command == X10_COMMANDS.BRIGHT || command == X10_COMMANDS.DIM || command == X10_COMMANDS.PRESET_DIM1 || command == X10_COMMANDS.PRESET_DIM2)
                        {
                            x10.AsyncSendX10(devices, command, level);
                        }
                        else if (command == X10_COMMANDS.EXTENDED)
                        {
                            x10.AsyncSendX10(devices, command, data1, data2);
                        }
                        else
                        {
                            x10.AsyncSendX10(devices, command);
                        }
                    }
                }
            }
            catch (Exception Ex)
            {
                EventLog.WriteEntry("Error parsing xpl command: " + Ex.Message, EventLogEntryType.Error);
            }
        }
コード例 #21
0
ファイル: X10Comm.cs プロジェクト: ErykB2000/xplproject
 /// <summary>Enqueues an X10 command for transmission</summary>
 /// <param name="Devices">A string starting with a housecode, followed by a comma separated list of
 /// device numbers. Eg. "A1,2,3" represents a command to be sent to devices A1, A2 and A3. Only 1 
 /// housecode per command is supported.</param>
 /// <param name="X10Command">X10 command to be sent</param>
 public void AsyncSendX10(string Devices, X10_COMMANDS X10Command)
 {
     AsyncSendX10(Devices, X10Command, 0, 0, 0);
 }