private byte[] MakeBasicPackage(short messageId, short size) { var list = new List<byte>(); list.PutBe(messageId); list.PutBe(size); list.PutBcd(TmlMobile); list.PutBe(Seq++); return list.ToArray(); }
/// <summary> /// 构建定位报文 /// </summary> /// <param name="lon">经度</param> /// <param name="lat">纬度</param> /// <param name="alt">高度</param> /// <param name="spd">速度</param> /// <param name="dir">方向</param> /// <param name="mil">里程</param> /// <param name="acc">ACC</param> /// <param name="loc">有效定位</param> /// <param name="gps">使用GPS</param> /// <param name="beidou">使用北斗</param> /// <param name="fatigue">疲劳报警</param> /// <param name="emergency">紧急报警</param> /// <param name="ovs">超速报警</param> /// <returns></returns> public byte[] MakePositionReportPackage(decimal lon, decimal lat, decimal alt, decimal spd, decimal dir, decimal mil, bool acc, bool loc, bool gps, bool beidou, bool fatigue, bool emergency, bool ovs) { var list = new List<byte>(); uint alarm = 0; if (emergency) alarm |= 1 << 0; if (ovs) alarm |= 1 << 1; if (fatigue) alarm |= 1 << 2; list.PutBe(alarm); uint status = 0; if (acc) status |= 1 << 0; if (loc) status |= 1 << 1; if (gps) status |= 1 << 18; if (beidou) status |= 1 << 19; status |= 1 << 12; // 车门加锁 list.PutBe(status); list.PutBe((uint)(lat * 1000000)); list.PutBe((uint)(lon * 1000000)); list.PutBe((ushort)alt); list.PutBe((ushort)(spd * 10)); list.PutBe((ushort)dir); list.PutBcd(DateTime.Now.ToString("yyMMddHHmmss")); list.Add(0x01); list.Add(0x04); list.PutBe((uint)(mil * 10)); var bp = MakeBasicPackage(0x0200, (short)list.Count); list.InsertRange(0, bp); return list.ToArray().PackData(); }