예제 #1
0
        public FrontTorqueMessage(byte[] payload)
        {
            payload.RequireBytes(RequireBytes);

            FrontTorqueRequest = new NewtonMeter(BitArrayConverter.ToInt16(payload, 12, 13) * 2m);
            FrontTorque        = new NewtonMeter(BitArrayConverter.ToInt16(payload, 27, 13) * 2m);
            FrontAxleRpm       = new RevolutionsPerMinute(BitArrayConverter.ToInt16(payload, 40, 16) * 0.1m);
        }
        public BatteryPowerMessage(byte[] payload)
        {
            payload.RequireBytes(RequireBytes);

            BatteryVoltage       = new Volt(BitArrayConverter.ToUInt16(payload, 0, 16) / 100.0m);
            BatteryCurrentSmooth = new Ampere(BitArrayConverter.ToInt16(payload, 16, 15) * -0.01m);
            BatteryCurrentRaw    = new Ampere(BitArrayConverter.ToInt16(payload, 32, 16) * -0.05m + 500m);
            ChargeTimeRemaining  = TimeSpan.FromMinutes(BitArrayConverter.ToUInt16(payload, 48, 12));
        }
        public BatteryInfoMessage(byte[] payload)
        {
            payload.RequireBytes(RequireBytes);

            BmsNumberOfContactors = BitArrayConverter.ToUInt16(payload, 8, 3);
            BmsState                = BitArrayConverter.ToUInt16(payload, 11, 4);
            IsolationResistance     = new KiloOhm(BitArrayConverter.ToInt16(payload, 19, 10));
            BmsChargeStatus         = BitArrayConverter.ToUInt16(payload, 32, 3);
            BmsChargePowerAvailable = new KiloWatt(BitArrayConverter.ToUInt16(payload, 38, 11) * 0.125m);
            MinBatteryTemperature   = new Celsius(BitArrayConverter.ToUInt16(payload, 56, 8) * 0.5m - 40m);
        }