gpt4 book ai didi

java - 在自定义工具箱的 Matlab Simulink block 内存储自定义 java 对象

转载 作者:太空宇宙 更新时间:2023-11-04 07:42:57 25 4
gpt4 key购买 nike

我正在致力于构建一个自定义 Simulink block 作为 Matlab 工具箱。为了避免使用matlab语言来对系统进行编程,我希望尽可能用Java来制作系统。我研究了 Matlab <-> Java 接口(interface),似乎可以做到这一点。然而,我找不到任何相关信息的一件事是将我的自定义 Java 对象(保存 block 的数据)存储在 Simulink block 内。

我进行了快速测试,看来存储 Java.lang.String 实例是可能的。然而,这是一个相对简单的测试。在开始之前,我想检查一下这是否可能。有人有类似设置的经验吗?对象是否只需要可序列化即可工作?

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

最佳答案

要将 Java 对象存储在 block 内,您应该使用其 UserData block 参数。根据文档,您可以在此参数中放置任何数据类型。

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

要创建新 block ,您应该设置库 block 的 PreCopyFcn 回调并在其中创建新的 Java 对象。我有一种感觉,如果您不这样做,那么 MATLAB 将从 UserData 复制对您的对象的引用(如果那里已经存在),这可能不是您想要的。

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

有关 block 回调参数的更多信息,请参阅 this .

关于java - 在自定义工具箱的 Matlab Simulink block 内存储自定义 java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15774376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com