/// <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); }
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); }
/// <summary> /// 表达式测评 /// </summary> /// <param name="node">表达式</param> public override void Evaluate(Expression node) { _whereSwitch = new SmartSwitch(SQLWriter.Where, SQLWriter.WriteAnd); base.Evaluate(node); }