示例#1
0
        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);
                    }
                }
            });
        }
示例#2
0
        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);
                    }
                }
            });
        }