Я использую JFMI (https://ptolemy.berkeley.edu/java/jfmi/) для связи с FMI (в C) из Java.
Для связи я использую существующие функции (например, Simulation.write (inPort.getName ()). With ((Double) value);).
Однако я сталкиваюсь с двумя проблемами:
- fmuTemplate.c содержит глобальные переменные для настройки чисел с плавающей точкой, целых и других переменных. Однако конфигурация не кажется мне логичной. Например, если я напишу, что NUMBER_OF_REALS равно 2, а NUMBER_OF_INTEGERS равно 2, я могу использовать только два раза запись в вещественное число / число с плавающей запятой или два раза в целые числа. Если я хочу использовать 4 скалярные переменные (2 float, 2 int), мне нужно определить NUMBER_OF_REALS 2 и NUMBER_OF_INTEGERS 4. Как если бы порядок был инкрементным.
- Запись строк из Java в FMI приводит к сбою программы («invalidState: fmi2SetString: Недопустимая последовательность вызовов.»).
Возможно, вы сталкивались с подобными проблемами? Если да, не могли бы вы поделиться своим опытом?
С наилучшими пожеланиями и спасибо.