Beispiel #1
0
        public void Step(ControlElement controlElement)
        {
            ContactEnv.Elevation        = _gmTerrainH;
            ContactEnv.Normal           = _normal;
            Hel.WindSpeed               = _windSpeed;
            Hel.Mass                    = 10800.0;
            Hel.InertialMoments         = _inertialMoments;
            Hel.PosCG                   = _posCg;
            Hel.vehicleCtrl.CyclicPitch = controlElement._cyclicStepHandleLeft.Elevator;
            Hel.vehicleCtrl.CyclicRoll  = controlElement._cyclicStepHandleLeft.Aileron;
            Hel.vehicleCtrl.Direction   = controlElement._pedalsLeft.Pedal;
            Hel.vehicleCtrl.Collective  = controlElement._generalStepHandleLeft.GeneralStep;


            IntPtr ptrHel = GetIntPtr(Hel);
            IntPtr ptrCe  = GetIntPtr(ContactEnv);
            IntPtr ptrRs  = GetIntPtr(ResState);
            IntPtr ptrRh  = GetIntPtr(ResHel);

            Step(0.02, ptrHel, ptrCe, ptrRs, ptrRh);

            ResState = (KinematicsState)Marshal.PtrToStructure(ptrRs, typeof(KinematicsState));
            ResHel   = (VhclOutp)Marshal.PtrToStructure(ptrRh, typeof(VhclOutp));
            _dataOut.KinematicsState = ResState;
            _dataOut.VhclOutp        = ResHel;

            _udpHelper.Send(GetByte(ResState), "127.0.0.1", 6100);
            _udpHelper.Send(GetByte(_dataOut), "127.0.0.1", 20020);
            _udpHelper.Send(GetByte(ResState), "127.0.0.1", 6105);
            Marshal.FreeHGlobal(ptrHel);
            Marshal.FreeHGlobal(ptrCe);
            Marshal.FreeHGlobal(ptrRs);
            Marshal.FreeHGlobal(ptrRh);
        }
Beispiel #2
0
        public void Step(ControlElement controlElement)
        {
            Hel.VehicleCtrl.AltimeterBaroPressure = 761.2;
            ContactEnv.Elevation   = _gmTerrainH;
            ContactEnv.Normal      = _normal;
            Hel.AirState.WindSpeed = _windSpeed;
            Hel.Mass            = 10800.0;
            Hel.InertialMoments = _inertialMoments;
            Hel.PosCG           = _posCg;

            if (controlElement.Channel == 1)
            {
                Hel.VehicleCtrl.CyclicPitch         = controlElement._cyclicStepHandleLeft.Elevator;
                Hel.VehicleCtrl.CyclicRoll          = controlElement._cyclicStepHandleLeft.Aileron;
                Hel.VehicleCtrl.Direction           = controlElement._pedalsLeft.Pedal;
                Hel.VehicleCtrl.Collective          = controlElement._generalStepHandleLeft.GeneralStep;
                Hel.VehicleCtrl.Trimmer             = (byte)controlElement._cyclicStepHandleLeft.BtnTrim;
                Hel.VehicleCtrl.Friction            = (byte)controlElement._generalStepHandleLeft.BtnStabilizer;
                Hel.VehicleCtrl.NoseGear.Brake      = controlElement._cyclicStepHandleLeft.BtnWheelBrake;
                Hel.VehicleCtrl.MainGearLeft.Brake  = controlElement._cyclicStepHandleLeft.BtnWheelBrake;
                Hel.VehicleCtrl.MainGearRight.Brake = controlElement._cyclicStepHandleLeft.BtnWheelBrake;
            }
            else if (controlElement.Channel == 2)
            {
                Hel.VehicleCtrl.CyclicPitch         = controlElement._cyclicStepHandleRight.Elevator;
                Hel.VehicleCtrl.CyclicRoll          = controlElement._cyclicStepHandleRight.Aileron;
                Hel.VehicleCtrl.Direction           = controlElement._pedalsLeft.Pedal;
                Hel.VehicleCtrl.Collective          = controlElement._generalStepHandleRight.GeneralStep;
                Hel.VehicleCtrl.Trimmer             = (byte)controlElement._cyclicStepHandleRight.BtnTrim;
                Hel.VehicleCtrl.Friction            = (byte)controlElement._generalStepHandleRight.BtnStabilizer;
                Hel.VehicleCtrl.NoseGear.Brake      = controlElement._cyclicStepHandleRight.BtnWheelBrake;
                Hel.VehicleCtrl.MainGearLeft.Brake  = controlElement._cyclicStepHandleRight.BtnWheelBrake;
                Hel.VehicleCtrl.MainGearRight.Brake = controlElement._cyclicStepHandleRight.BtnWheelBrake;
            }

            //Hel.VehicleCtrl.CyclicPitch = 0.5;
            //Hel.VehicleCtrl.CyclicRoll = 0.5;
            //Hel.VehicleCtrl.Direction = 0.5; ;
            //Hel.VehicleCtrl.Collective = 0.0;
            //Hel.VehicleCtrl.Trimmer = 0;
            //Hel.VehicleCtrl.Friction = 0;
            //Hel.VehicleCtrl.NoseGear.Brake = 1;
            //Hel.VehicleCtrl.MainGearLeft.Brake = 1;
            //Hel.VehicleCtrl.MainGearRight.Brake = 1;

            IntPtr ptrHel = GetIntPtr(Hel);
            IntPtr ptrCe  = GetIntPtr(ContactEnv);
            IntPtr ptrRs  = GetIntPtr(ResState);
            IntPtr ptrRh  = GetIntPtr(ResHel);

            Step(0.01, ptrHel, ptrCe, ptrRs, ptrRh);

            ResState = (KinematicsState)Marshal.PtrToStructure(ptrRs, typeof(KinematicsState));
            ResHel   = (VhclOutp)Marshal.PtrToStructure(ptrRh, typeof(VhclOutp));
            _dataOut.KinematicsState = ResState;
            _dataOut.VhclOutp        = ResHel;
            _dataOut.VhclInp         = Hel;



            foreach (var ippoint in _config.NetworkSettings.Svvo.Position.IPPoint)
            {
                _udpHelper.Send(GetByte(ResState), ippoint.Ip, ippoint.Port);
            }

            foreach (var ippoint in _config.NetworkSettings.DataTransfer.DynamicModel.IPPoint)
            {
                _udpHelper.Send(GetByte(_dataOut), ippoint.Ip, ippoint.Port);
            }

            if (_isRecord)
            {
                _recordFlight.RecordData(_dataOut, ResState);
            }
            Marshal.FreeHGlobal(ptrHel);
            Marshal.FreeHGlobal(ptrCe);
            Marshal.FreeHGlobal(ptrRs);
            Marshal.FreeHGlobal(ptrRh);
        }
Beispiel #3
0
 public ModelHx()
 {
     KinematicsState = new KinematicsState();
     VhclOutp        = new VhclOutp();
     VhclInp         = new VhclInp();
 }