Example #1
0
        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();
        }
Example #2
0
        /// <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();
        }