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}"); } }
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); }
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); }
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); } }
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); } }
internal void AddRequest(SimVar selectedSimVar) { this.AddRequest(selectedSimVar.VarName, selectedSimVar.Unit, selectedSimVar.Writable); }