コード例 #1
0
        internal static void RunExample()
        {
            string path = Path.Combine(
                Tools.GetBaseFolder(new Uri(Assembly.GetExecutingAssembly().CodeBase).AbsolutePath,
                                    nameof(Femyou)), "FMU", "bin", "dist");

            using IModel model = Model.Load($"{path}/Feedthrough.fmu");
            Console.WriteLine("Loaded the model!");
            using IInstance instance = model.CreateCoSimulationInstance("instance1", new ConsoleCallbacks());
            Console.WriteLine("Created an instance of the model!");

            Console.WriteLine("Reading a variable and then changing it's values and reading it again.");
            IVariable exampleString = model.Variables["string_param"];

            Console.WriteLine($"default string_param value = {instance.ReadString(exampleString)}");
            instance.WriteString((exampleString, "10.0 Fellows"));
            Console.WriteLine($"New value for string_param = {instance.ReadString(exampleString)}");
            Console.WriteLine("Reading and writing over.\n\n");


            Console.WriteLine("Printing all input variables and their values.");
            foreach ((string key, IVariable value) in model.Variables.Where(pair =>
                                                                            pair.Value.Causality == Causality.Input))
            {
                switch (value.VariableType.VariableType)
                {
                case VariableType.Real:
                    Console.WriteLine($"{key} - {value.Description} - {instance.ReadReal(value)}");
                    break;

                case VariableType.Integer:
                    Console.WriteLine($"{key} - {value.Description} - {instance.ReadInteger(value)}");
                    break;

                case VariableType.String:
                    Console.WriteLine($"{key} - {value.Description} - {instance.ReadString(value)}");
                    break;

                case VariableType.Boolean:
                    Console.WriteLine($"{key} - {value.Description} - {instance.ReadBoolean(value)}");
                    break;

                case VariableType.Enumeration:
                case VariableType.Unknown:
                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            Console.WriteLine("Done printing variables.");
        }