Beispiel #1
0
        public void AddRequest(string varname, string varunit, string writable = "")
        {
            SimVar svar = this.VarList.Where(k => k.VarName == varname && k.Unit == varunit).FirstOrDefault();

            if (svar == null)
            {
                svar = new SimVar()
                {
                    VarName = varname,
                    Unit    = varunit,
                    //Value = 0.0,
                    Subscribed    = false,
                    DefID         = this.VarList.Count() + 1,
                    SimObjectType = SIMCONNECT_SIMOBJECT_TYPE.USER,
                    Writable      = writable
                };
                svar.Subscribed = this.RegisterToSimConnect(svar);
                this.VarList.Add(svar);

                //this.VarList.
            }
            else
            {
                MessageBox.Show($"Variable already exists!\r\n\r\n{varname}");
            }
        }
Beispiel #2
0
 public bool LoadVariablesFromFile(string filename)
 {
     if (File.Exists(filename))
     {
         this.VarList.Clear();
         string[] lines = File.ReadAllLines(filename);
         foreach (string l in lines)
         {
             string[] items = l.Split(',');
             //this.AddRequest(items[0], items[1], items[2]);
             SimVar svar = new SimVar()
             {
                 VarName  = items[0],
                 Unit     = items[1],
                 Writable = items[2]
             };
             this.AddRequest(svar);
         }
         this.VariablesFileName = filename;
         this.VarListModified   = false;
         return(true);
     }
     else
     {
         MessageBox.Show($"The '{filename}' does not exists!");
     }
     return(false);
 }
Beispiel #3
0
        public static double GetVariableValue(string varname)
        {
            SimVar v = Globals.MainWindow.SimConnectViewModel.VarList.Where(k => k.VarName == varname).FirstOrDefault();

            if (v != null)
            {
                return(v.Value == null ? double.NaN : (double)(v.Value));
            }
            return(double.NaN);
        }
Beispiel #4
0
        private bool RegisterToSimConnect(SimVar svar)
        {
            if (this.SimConnect != null)
            {
                if (svar.VarName.StartsWith("L:"))
                {
                    //svar.ClientRequestID = this.ClientRequestID++;
                    //var vdata = new WriteToSim();
                    //vdata.isSet = 0;
                    //vdata.name = WriteToSim.AllocString(svar.VarName.Remove(0, 2));
                    //vdata.index = svar.ClientRequestID;//  m_localVarNames.IndexOf(op.name);
                    //svar.DataType = SIMCONNECT_DATATYPE.FLOAT64;
                    //svar.Unit = "Number";
                    //this.SimConnect.SetClientData(ClientData.WriteToSim, ClientData.WriteToSim, SIMCONNECT_CLIENT_DATA_SET_FLAG.DEFAULT, 0, vdata);

                    return(true);
                }
                /// Define a data structure
                if (svar.Unit.ToLower().Contains("string"))
                {
                    this.SimConnect.AddToDataDefinition((SIMDEFINITION)svar.DefID, svar.VarName, null, SIMCONNECT_DATATYPE.STRING128, 0.0f, SimConnect.SIMCONNECT_UNUSED);
                    svar.DataType = SIMCONNECT_DATATYPE.STRING128;
                    /// IMPORTANT: Register it with the simconnect managed wrapper marshaller
                    /// If you skip this step, you will only receive a uint in the .dwData field.
                    this.SimConnect.RegisterDataDefineStruct <STRING128>((SIMDEFINITION)svar.DefID);
                }
                else if (svar.Unit.ToLower() == "xyz")
                {
                    // this.SimConnect.AddToDataDefinition(DEFINITIONS.AIRPLANE, "AIRCRAFT_ORIENTATION_AXIS", "XYZ", SIMCONNECT_DATATYPE.XYZ, 0f, SimConnect.SIMCONNECT_UNUSED);
                    // this.SimConnect.RequestDataOnSimObject(REQUESTS.AIRPLANE, DEFINITIONS.AIRPLANE, SimConnect.SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD.VISUAL_FRAME, 0, 0, 0, 0);
                    ////this.SimConnect.AddToDataDefinition(DEFINITIONS.AIRPLANE, "AIRCRAFT_ORIENTATION_AXIS", "XYZ", SIMCONNECT_DATATYPE.XYZ, 0f, SimConnect.SIMCONNECT_UNUSED);

                    ////this.SimConnect.AddToDataDefinition((SIMDEFINITION)svar.DefID, "AIRCRAFT_ORIENTATION_AXIS", "XYZ", SIMCONNECT_DATATYPE.XYZ, 0f, SimConnect.SIMCONNECT_UNUSED);
                    //this.SimConnect.AddToDataDefinition((SIMDEFINITION)svar.DefID, "AIRCRAFT_ORIENTATION_AXIS", "XYZ", SIMCONNECT_DATATYPE.XYZ, 0f, SimConnect.SIMCONNECT_UNUSED);
                    ////this.SimConnect.AddToDataDefinition((SIMDEFINITION)svar.DefID, svar.VarName.Replace(" ", "_"), null, SIMCONNECT_DATATYPE.XYZ, 0.0f, SimConnect.SIMCONNECT_UNUSED);
                    //svar.DataType = SIMCONNECT_DATATYPE.XYZ;
                    //this.SimConnect.RegisterDataDefineStruct<SIMCONNECT_DATA_XYZ>((SIMDEFINITION)svar.DefID);
                }
                else
                {
                    this.SimConnect.AddToDataDefinition((SIMDEFINITION)svar.DefID, svar.VarName, svar.Unit, SIMCONNECT_DATATYPE.FLOAT64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
                    svar.DataType = SIMCONNECT_DATATYPE.FLOAT64;
                    /// IMPORTANT: Register it with the simconnect managed wrapper marshaller
                    /// If you skip this step, you will only receive a uint in the .dwData field.
                    ///
                    this.SimConnect.RegisterDataDefineStruct <double>((SIMDEFINITION)svar.DefID);
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }
Beispiel #5
0
 public static void LoadVariables(string filename)
 {
     if (File.Exists(filename))
     {
         string[] lines = File.ReadAllLines(filename);
         foreach (string l in lines)
         {
             string[] items = l.Split(',');
             //this.AddRequest(items[0], items[1], items[2]);
             SimVar svar = new SimVar()
             {
                 VarName  = items[0],
                 Unit     = items[1],
                 Writable = items[2]
             };
             SimVarList.Add(svar);
         }
     }
 }
        private void AddRequest()
        {
            VariableEditorWindow d = new VariableEditorWindow();

            d.ViewModel.Filter = LastVarFilter;
            if (d.ShowDialog() == true)
            {
                this.LastVarFilter = d.Filter.Text;

                SimVar sv = new SimVar();
                sv.VarName = d.ViewModel.SelectedSimVar.VarName;
                if (d.ViewModel.VarIndex > 0)
                {
                    sv.VarName += ":" + d.ViewModel.VarIndex.ToString();
                }
                sv.Unit     = d.ViewModel.SelectedSimVar.Unit;
                sv.Writable = d.ViewModel.SelectedSimVar.Writable;
                this.SimConnectViewModel.AddRequest(sv);
            }
        }
Beispiel #7
0
 internal void AddRequest(SimVar selectedSimVar)
 {
     this.AddRequest(selectedSimVar.VarName, selectedSimVar.Unit, selectedSimVar.Writable);
 }