private void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { //0;0;3;0;14;Gateway startup complete string indata = _serialPort.ReadLine(); if (indata.StartsWith("0;0;3;0;14;")) { _gatewayReady = true; } Task.Factory.StartNew(() => { var parsedMessage = MessageFactory.ConstructMessageFromRaw(indata); Console.WriteLine("Receive Message from {0} Type {1} SubType {2}", parsedMessage.NodeId == 0 ? "Gateway" : parsedMessage.NodeId.ToString(), parsedMessage.GetType().Name, parsedMessage.SubType); var messageProcessor = MessageProcessorFactory.CreateMessageProcessor(parsedMessage); if (messageProcessor != null) { string responseMessageString = null; var raiseEvent = messageProcessor.ProcessIncomingMessage(parsedMessage, out responseMessageString); if (!string.IsNullOrEmpty(responseMessageString)) { _serialPort.Write(responseMessageString); } if (raiseEvent && OnReceiveMessageFromSensors != null) { OnReceiveMessageFromSensors(parsedMessage); } } }); }
private void OnReceiveMessage(string messageFromGateway) { Task.Factory.StartNew(() => { var parsedMessage = MessageFactory.ConstructMessageFromRaw(messageFromGateway); Console.WriteLine("Receive Message from {0} Type {1} SubType {2}", parsedMessage.NodeId == 0 ? "Gateway" : parsedMessage.NodeId.ToString(), parsedMessage.GetType().Name, parsedMessage.SubType); var messageProcessor = MessageProcessorFactory.CreateMessageProcessor(parsedMessage); if (messageProcessor != null) { string responseMessageString = null; var raiseEvent = messageProcessor.ProcessIncomingMessage(parsedMessage, out responseMessageString); if (!string.IsNullOrEmpty(responseMessageString)) { GatewayWrapper.CallParseAndSend(_unmanagedGateway, responseMessageString); } if (raiseEvent && OnReceiveMessageFromSensors != null) { OnReceiveMessageFromSensors(parsedMessage); } } }); }