首页 文章

在Matlab Simulink块中存储自定义java对象以用于自定义工具箱

提问于
浏览
1

我正在构建一个自定义Simulink块作为Matlab工具箱 . 为了避免使用matlab的语言对系统进行编程,我想尽可能地用Java编写系统 . 我研究了Matlab < - > Java接口,似乎可以做到这一点 . 但是,我找不到任何有关信息的一件事是将我的自定义Java对象(保存块的数据)存储在Simulink块中 .

我进行了快速测试,似乎可以存储Java.lang.String实例 . 但是,这是一个相对简单的测试 . 在先跳头之前,我想检查一下是否可能 . 有没有人有类似设置的经验?该对象是否只需要Serializable才能工作?

有关背景信息,我希望用Java实现非数学部分(GUI代码,处理等) . 数学相关元素可能会保留在matlab中 .

1 回答

  • 1

    要将Java对象存储在块中,应使用其 UserData 块参数 . 根据文档,您可以在此参数中添加任何数据类型 .

    我能看到的唯一问题是保存/加载和创建新块 . 保存/加载 should 可以使用序列化来解决,但您必须尝试查看 . 如果这不起作用,那么您可以为块创建隐藏的掩码参数,将Java对象序列化为字符串,并在 PreSaveFcn 回调期间将数据保存在此掩码中 . 可以从 LoadFcn 回调中的mask参数反序列化数据 .

    要创建新块,您应该设置库块的 PreCopyFcn 回调并在那里创建新的Java对象 . 我觉得如果你不这样做,那么MATLAB将从UserData复制你的对象的引用(如果已存在),这可能不是你想要的 .

    您可能还想覆盖 OpenFcn 回调,因为您的目标是将Java对象用作一种加强掩码,这样当用户双击该块时,您可以显示自定义UI .

    有关块回调参数的更多信息,请参见this .

相关问题