public static SensorMessage FromRawMessage(string str)
        {
            if (string.IsNullOrEmpty(str))
                return null;

            string[] parts = str.Split(new char[] {';'}, StringSplitOptions.None);
            if (parts.Length != 6)
                return null;
            
            string rawPayload = parts[5].Trim();

            //var payload;
            //if ((MessageType)byte.Parse(parts[2]) == MessageType.Stream)
            //{
            //    payload = [];
            //    for (var i = 0; i < rawpayload.length; i+=2)
            //        payload.push(parseInt(rawpayload.substring(i, i + 2), 16));
            //}
            //else
            //    payload = rawpayload;

            SensorMessage msg = null;

            try
            {
                msg = new SensorMessage(
                    byte.Parse(parts[0]),
                    byte.Parse(parts[1]),
                    (SensorMessageType)byte.Parse(parts[2]),
                    byte.Parse(parts[3]) == 1,
                    byte.Parse(parts[4]),
                    parts[5]);
            }
            catch (Exception) { }

            return msg;
        }
        public void Send(SensorMessage message)
        {
            if (isConnected)
            {

            }
        }
 public void Send(SensorMessage message)
 {
     if (serialPort.IsOpen && message != null)
         serialPort.WriteLine(message.ToRawMessage());
 }
 public SensorMessageEventArgs(SensorMessage message)
 {
     Message = message;
 }