Esempio n. 1
0
        /// <summary>
        /// 表达式测评
        /// </summary>
        /// <param name="node">表达式</param>
        public override void Evaluate(Expression node)
        {
            _whereSwitch = new SmartSwitch(SQLWriter.Where, SQLWriter.WriteAnd);

            _orderBySwitch = new SmartSwitch(SQLWriter.OrderBy, SQLWriter.Delimiter);

            _fromSwitch = new SmartSwitch(SQLWriter.From, SQLWriter.Join);

            _TypeCache = new ConcurrentDictionary <Type, Type>();

            base.Evaluate(node);
        }
Esempio n. 2
0
        private static void NodePoll_PollReceived(List <C4UFX.CANMessage> responses)
        {
            if (responses.Count == 0)
            {
                StatusUpdate?.Invoke("No Nodes found - Check your connection.");
                return;
            }

            StatusUpdate?.Invoke("Pinging devices...");

            foreach (C4UFX.CANMessage response in responses)
            {
                byte fromNode = CANInterface.IdToFndTnd(response.ID).FromNode;
                Node newNode;
                switch ((Signatures)response.Data[2])
                {
                case Signatures.SmartSwitch: newNode = new SmartSwitch(fromNode); break;

                case Signatures.ACDimmer: newNode = new ACDimmer(fromNode); break;

                case Signatures.TimerRTC: newNode = new TimerRTC(fromNode); break;

                case Signatures.SceneController: newNode = new SceneController(fromNode); break;

                default: newNode = new UnknownNode(fromNode); break;
                }

                allResponses.Add(newNode);
            }

            Dictionary <byte, List <byte> > sendList = new Dictionary <byte, List <byte> >();

            foreach (Node node in allResponses)
            {
                if (sendList.Keys.Contains(node.NodeId))
                {
                    break;
                }
                sendList.Add(node.NodeId, new List <byte>());
                for (byte i = 1; i < 127; i++)
                {
                    sendList[node.NodeId].Add(i);
                }
            }

            CANPing poll = new CANPing(Commands.CmdSysPing, sendList);

            poll.ResponseReceived += DevicePoll_Received;
            PongsReceived?.Invoke(allResponses, false);
        }
Esempio n. 3
0
        /// <summary>
        /// 表达式测评
        /// </summary>
        /// <param name="node">表达式</param>
        public override void Evaluate(Expression node)
        {
            _whereSwitch = new SmartSwitch(SQLWriter.Where, SQLWriter.WriteAnd);

            base.Evaluate(node);
        }