JFMI,标量变量数,传递字符串

时间:2018-09-05 15:16:09

标签: java c fmi

我正在使用JFMI(https://ptolemy.berkeley.edu/java/jfmi/)从Java与FMI(以C语言)进行通信。

为了进行通讯,我使用了现有的功能(例如,Simulation.write(inPort.getName())。with((Double)value);)。

但是,我面临两个问题:

  • fmuTemplate.c包含用于配置浮点数,整数和其他变量数量的全局变量。但是,该配置对我而言似乎不合逻辑。例如,如果我写NUMBER_OF_REALS为2,而NUMBER_OF_INTEGERS为2,则我只能使用两次写入实数/浮点数或两次写入整数。如果要使用4个标量变量(2个浮点,2个整数),则需要定义NUMBER_OF_REALS 2个和NUMBER_OF_INTEGERS 4个。好像顺序是递增的。
  • 将字符串从Java写入FMI似乎会使程序崩溃(“ invalidState:fmi2SetString:非法调用序列。”)。

您可能遇到过类似的问题吗?如果是,请您分享经验吗?

最诚挚的问候,谢谢。

1 个答案:

答案 0 :(得分:1)

JFMI是否仅适用于FMI 1.0?

无论如何,我会考虑使用JavaFMI或FMI4j,因为它们仍在积极维护并且可从maven Central获得。

JavaFMI支持FMI 1.0和2.0进行协同仿真,并具有更稳定的API。 FMI4j更快(JNI与JNA),并且支持FMI 2.0进行协同仿真和模型交换。