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); }
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); }
public ModelHx() { KinematicsState = new KinematicsState(); VhclOutp = new VhclOutp(); VhclInp = new VhclInp(); }