コード例 #1
0
        public void RequestSimVar_Test_Once()
        {
            result = null;
            SimConnectHandler.SimError     += SimConnect_Error;
            SimConnectHandler.SimConnected += SimConnect_Connection;
            SimConnectHandler.SimData      += SimConnect_DataReceived;
            SimConnectHandler.Connect();
            var variable = new SimConnectVariable
            {
                Name = "AMBIENT WIND VELOCITY",
                Unit = "knots"
            };
            var requestID = SimConnectHandler.RegisterSimVar(variable, SimConnectUpdateFrequency.Once);

            // Wait up to 5 seconds for MSFS to return the requested value
            DateTime endTime = DateTime.Now.AddSeconds(5);

            while (result == null && DateTime.Now < endTime)
            {
                Thread.Sleep(100);
            }
            SimConnectHandler.CancelRequest(variable);
            SimConnectHandler.Disconnect();
            Assert.IsNotNull(result);
        }
コード例 #2
0
 public void Disconnect_Test()
 {
     SimConnectHandler.Connect(); // Find/Try all defined server connection configurations
     Assert.IsTrue(SimConnectHandler.IsConnected);
     SimConnectHandler.Disconnect();
     Assert.IsFalse(SimConnectHandler.IsConnected);
 }
コード例 #3
0
        private void dgvButton_Click(object sender, DataGridViewCellEventArgs e)
        {
            var reqId = (int?)dgVariables.Rows[e.RowIndex].Cells["ReqID"].Value;

            if (e.ColumnIndex == dgVariables.Columns["SimVarUpdate"].Index)
            {
                // User wants to refresh the displayed value
                if (reqId > -1)
                {
                    SimConnectHandler.GetSimVar((int)reqId);
                }
                else
                {
                    var isReadOnly = ((DataGridViewCheckBoxCell)dgVariables.Rows[e.RowIndex].Cells["VarIsReadOnly"]).Value
                                     == ((DataGridViewCheckBoxCell)dgVariables.Rows[e.RowIndex].Cells["VarIsReadOnly"]).TrueValue;
                    var simVarName             = (string)dgVariables.Rows[e.RowIndex].Cells["SimVarName"].Value;
                    var simVarUnit             = (string)dgVariables.Rows[e.RowIndex].Cells["SimVarUnit"].Value;
                    var frequency              = dgVariables.Rows[e.RowIndex].Cells["SimVarFreq"].Value;
                    SimConnectVariable request = new SimConnectVariable
                    {
                        Name = simVarName,
                        Unit = simVarUnit
                    };
                    if (isReadOnly)
                    {
                        dgVariables.Rows[e.RowIndex].Cells["ReqID"].Value = SendRequest(request, int.Parse(frequency.ToString()));
                    }
                    else
                    {
                        var value = dgVariables.Rows[e.RowIndex].Cells["SimVarValue"].Value;
                        SendValue(new SimConnectVariableValue
                        {
                            Request = request,
                            Value   = value
                        });
                    }
                }
            }
            if (e.ColumnIndex == dgVariables.Columns["SimVarDelete"].Index)
            {
                var simVarName             = (string)dgVariables.Rows[e.RowIndex].Cells["SimVarName"].Value;
                var simVarUnit             = (string)dgVariables.Rows[e.RowIndex].Cells["SimVarUnit"].Value;
                SimConnectVariable request = new SimConnectVariable
                {
                    Name = simVarName,
                    Unit = simVarUnit
                };
                SimConnectHandler.CancelRequest(request);
                dgVariables.Rows.RemoveAt(e.RowIndex);
            }
        }
コード例 #4
0
 private void RequestAllSimVars()
 {
     foreach (DataGridViewRow row in dgVariables.Rows)
     {
         var simVarName = row.Cells["SimVarName"].Value?.ToString();
         var simVarUnit = row.Cells["SimVarUnit"].Value?.ToString();
         var request    = new SimConnectVariable
         {
             Name = simVarName,
             Unit = simVarUnit
         };
         SimConnectHandler.GetSimVar(request);
     }
 }
コード例 #5
0
 private void pbConnect_Click(object sender, EventArgs e)
 {
     SetInvocations();
     if (!SimConnectHandler.IsConnected)
     {
         var       server = txtSimConnectServer.Text;
         var       port   = (int)txtSimConnectPort.Value;
         IPAddress ipAddr = Dns.GetHostAddresses(server).FirstOrDefault(x => x.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork);
         EndPoint  ep     = new IPEndPoint(ipAddr, port);
         SimConnectHandler.Connect(ep);
     }
     else
     {
         SimConnectHandler.Disconnect();
     }
 }
コード例 #6
0
 private void FormClose_Click(object sender, FormClosingEventArgs e)
 {
     SimConnectHandler.Disconnect();
 }
コード例 #7
0
 private int SendRequest(SimConnectVariable request, int frequency)
 {
     return(SimConnectHandler.GetSimVar(request, frequency)); // If FetchLatestValue = true; Auto-update
 }
コード例 #8
0
 private int SendValue(SimConnectVariableValue variableValue)
 {
     return(SimConnectHandler.SetSimVar(variableValue));
 }
コード例 #9
0
 public void ConnectViaIP_Test()
 {
     SimConnectHandler.Connect(GetEndPoint());
     Thread.Sleep(1000);
     Assert.IsTrue(SimConnectHandler.IsConnected);
 }
コード例 #10
0
 public void ConnectConfiguration_Test()
 {
     SimConnectHandler.Connect(); // Find/Try all defined server connection configurations
     Assert.AreNotEqual(SimConnectHandler.Connection.Port, "0");
 }
コード例 #11
0
 public void ConnectUseLocalServerConfig_Test()
 {
     SimConnectHandler.Connect(); // Find/Try all defined server connection configurations
     Assert.IsTrue(SimConnectHandler.IsConnected);
 }