public static MessageBase Parse(string data) { //var allControls = Enum.GetValues(typeof(eControl)).OfType<byte>().ToList(); //if(!allControls.Contains((byte)data[3])) return null; var ctrl = (eControl)(byte)data[3]; MessageBase msg = null; switch (ctrl) { case eControl.ACK: case eControl.NAK: case eControl.DialCompleted: case eControl.LP_Update: case eControl.LP_ACK: case eControl.LP_NAK: //case eControl.TSL_ENQ: //case eControl.TSL_EOT: //case eControl.TSL_Prepare: //case eControl.TSL_ResultEnd: //case eControl.TSL_ResultRequest: msg = new SimpleMessage(ctrl); break; case eControl.LineStatus: msg = LineStatusMessageBase.Parse(data); break; case eControl.AllStatus: var allStatus = new AllStatusMessage(); msg = allStatus; break; case eControl.StartAlarm: case eControl.EndAlarm: msg = StartAlarmMessage.Parse(data); break; //case eControl.TSL_ResultData: // msg = TSL_ResultMessage.Parse(data); // break; } if (msg != null) { msg.Address = (byte)data[2]; } return(msg); }
public static new StartAlarmMessage Parse(string data) { StartAlarmMessage msg = null; if ((eControl)(byte)data[3] == eControl.StartAlarm) { msg = new StartAlarmMessage(); } else if ((eControl)(byte)data[3] == eControl.EndAlarm) { msg = new EndAlarmMessage(); } if (msg == null) { return(null); } msg.Period = (byte)data[4]; msg.Hour = (byte)data[5]; msg.Times = (byte)data[6]; return(msg); }