我创建了一个simulink块,用于存储使用uitree从dbc文件中选择的数据。然后将从uitree中选择的数据存储在块中。我的问题是,加载dbc文件时,完全填充uitree需要10到15秒,这对于第一次创建树是可以的,但是如果有多个这样的块,会相对不方便,尤其是因为我的simulink模型可能需要十几个这样的模块。不得不重新创建uitree十二次,每次15秒,将浪费大量的时间。
有关代码当前运行方式的更多背景信息:
我的定制块已放入simulink模型中。用户单击该块。该块调用matlab脚本。然后,此脚本使用uigetfile提示用户选择dbc。然后,matlab脚本从dbc文件收集数据,并使用它填充uitree。 uitree可能有一百个节点,每个节点可能带有2-40个子节点,这就是为什么生成它需要这么长时间的原因。当前的问题是,模型中的每个自定义模块都必须发生这种情况。
是否可以缓存uitree,或者simulink / matlab可以在第一次从特定dbc文件中加载uitree时记住该uitree?这样,下次块尝试打开它时,只需要几秒钟即可打开先前生成的树,而不是多次完全重新创建uitree?
谢谢
答案 0 :(得分:0)
假设uitree在MATLAB图形窗口中呈现,当前的问题是每次关闭图形时,销毁其中的所有数据。您需要做的是为您的图形写一个CloseFcn
,以便它不会被破坏而变得不可见。
您还需要添加代码,以便
CloseFcn
添加代码)来销毁所有图形(无论它们是可见还是不可见)。您还可以考虑只包含一个已经包含所有已打开的dbc uitress的图形,可能是将它们分别放在不同的uitab面板上。