private byte[] GetFullPackage(byte[] body, UpMessageID messageName, out ushort headerOrderID) { if (body == null) { body = new byte[0]; } TransferMeanning(ref body); var header = GetHeader(messageName, body, out headerOrderID); TransferMeanning(ref header); byte[] package = new byte[3 + body.Length + header.Length]; byte checkCode = 0x00;//If checkcode = 7e? foreach (var dataItem in header) { checkCode ^= dataItem; } foreach (var dataItem in body) { checkCode ^= dataItem; } package[0] = identifierBit; package[package.Length - 1] = identifierBit; package[package.Length - 2] = checkCode; Array.Copy(header, 0, package, 1, header.Length); if (body.Length > 0) { Array.Copy(body, 0, package, 1 + header.Length, body.Length); } return(package); }
/// <summary> /// --------------------------------------------------------------------------------- /// -- Message Header -- /// --------------------------------------------------------------------------------- /// -- MessageID | Message Property | SimNum | Order ID | Package Top -- /// -- 0000 | 0000 | 0000 0000 0000 | 0000 | -- /// --------------------------------------------------------------------------------- /// --------------------------------------------------------------------------------- /// </summary> /// <param name="messageName"></param> /// <param name="realBody">assume no subpackage</param> /// <returns></returns> private byte[] GetHeader(UpMessageID messageName, byte[] realBody, out ushort headerOrderID) { var messageId = encoder.Encode((ushort)messageName); var messageProperty = encoder.Encode((ushort)realBody.Length); var simnumData = encoder.EncodeBCD(simnum, 12); headerOrderID = orderID; var orderIDData = encoder.Encode(orderID++); IList <byte[]> lst = new List <byte[]>(); lst.Add(messageId); lst.Add(messageProperty); lst.Add(simnumData); lst.Add(orderIDData); return(GetFullData(lst)); }