コード例 #1
0
ファイル: FsConnection.cs プロジェクト: geoffsmith/xtouchfs
        private void InitSimConnectField(Field field)
        {
            if (!isConnected)
            {
                return;
            }
            var attrib = FieldDefinition(field);

            if (attrib is null)
            {
                return;
            }

            var unitConfig = UnitTypeConfig.GetConfig(attrib.UnitType);

            // Set up data definition
            Console.WriteLine($"Def {attrib.DatumName}, {attrib.UnitType}");
            simconnect.AddToDataDefinition(field, attrib.DatumName, unitConfig.Units,
                                           unitConfig.DataType, 0.0f, SimConnect.SIMCONNECT_UNUSED);
            var method    = typeof(SimConnect).GetMethod("RegisterDataDefineStruct");
            var methodRef = method.MakeGenericMethod(unitConfig.Struct);

            methodRef.Invoke(simconnect, new object[] { field });

            // Get initial value
            simconnect.RequestDataOnSimObjectType(field, field, 0, SIMCONNECT_SIMOBJECT_TYPE.USER);

            // Create event mapping
            simconnect.MapClientEventToSimEvent(field, attrib.EventId);
            simconnect.AddClientEventToNotificationGroup(GROUPS.GroupA, field, false);
        }
コード例 #2
0
ファイル: FsConnection.cs プロジェクト: geoffsmith/xtouchfs
        public SimControlAdaptor CreateAdaptor(Field field)
        {
            var attrib = FieldDefinition(field);

            if (attrib is null)
            {
                return(null);
            }
            var unitConfig     = UnitTypeConfig.GetConfig(attrib.UnitType);
            var controlAdaptor = new SimControlAdaptor(field, attrib.UnitType, unitConfig.MinValue, unitConfig.MaxValue);

            controlAdaptors.Add(field, controlAdaptor);
            InitSimConnectField(field);
            return(controlAdaptor);
        }