public override JT809Response Msg0x1200_0x1202(JT809Request request)
        {
            var exchangeMessageBodies    = request.Package.Bodies as JT809ExchangeMessageBodies;
            var gpsBodies                = exchangeMessageBodies.SubBodies as JT809_0x1200_0x1202;
            JT809GpsPosition gpsPosition = new JT809GpsPosition();

            gpsPosition.Vno       = exchangeMessageBodies.VehicleNo;
            gpsPosition.VColor    = (byte)exchangeMessageBodies.VehicleColor;
            gpsPosition.Alarm     = (int)gpsBodies.VehiclePosition.Alarm;
            gpsPosition.Altitude  = gpsBodies.VehiclePosition.Altitude;
            gpsPosition.Direction = gpsBodies.VehiclePosition.Direction;
            gpsPosition.Encrypt   = (byte)gpsBodies.VehiclePosition.Encrypt;
            gpsPosition.State     = (int)gpsBodies.VehiclePosition.State;
            gpsPosition.Lat       = gpsBodies.VehiclePosition.Lat;
            gpsPosition.Lon       = gpsBodies.VehiclePosition.Lon;
            gpsPosition.Vec1      = gpsBodies.VehiclePosition.Vec1;
            gpsPosition.Vec2      = gpsBodies.VehiclePosition.Vec2;
            gpsPosition.Vec3      = (int)gpsBodies.VehiclePosition.Vec3;
            gpsPosition.GpsTime   = (new DateTime(
                                         gpsBodies.VehiclePosition.Year,
                                         gpsBodies.VehiclePosition.Month,
                                         gpsBodies.VehiclePosition.Day,
                                         gpsBodies.VehiclePosition.Hour,
                                         gpsBodies.VehiclePosition.Minute,
                                         gpsBodies.VehiclePosition.Second).ToUniversalTime().Ticks - 621355968000000000) / 10000000;
            gpsPosition.FromChannel = gpsOptions.FromChannel;
            producer.ProduceAsync($"{0x1202}", $"{exchangeMessageBodies.VehicleNo}{exchangeMessageBodies.VehicleColor}", gpsPosition.ToByteArray());
            return(base.Msg0x1200_0x1202(request));
        }