Matlab GUI中的嵌套蓝牙回调

安迪

我知道Matlab GUI回调已经在这里讨论了数百次,但是我认为我遇到了一个特殊问题。

我知道如何在不同的GUI回调之间共享数据(我使用文档中所述的handles-structure )。我使用GUIDE创建了GUI。

有一个按钮可以在其回调函数中创建一个蓝牙句柄,效果很好。建立蓝牙连接并接收到一定数量的字节后,就会触发蓝牙回调功能(由设置bluetoothhandle.BytesAvailavailableFcn = @rdatac_Callback)。

我的蓝牙回调函数的标头如下所示:

function rdatac_Callback(hObject, eventdata)

hObject包含了蓝牙手柄,eventdata从而引发了回调的情况下(在这种情况下,它被称为“BytesAvailable”这样)。

此函数与所有其他GUI回调位于同一文件中。问题是我无法在蓝牙回调内访问GUI的句柄结构。我尝试添加“句柄”作为第三个输入参数,但随后它为空。我还尝试通过以下方式生成自己的句柄结构

h = guidata(findobj('Name','BCI'));

其中BCI是GUI窗口的名称。这在任何GUI回调函数中均能完美运行,但是在Bluetooth回调中找不到其他元素,因此Bluetooth回调具有其自己的“作用域”。

所以我的问题是:如何与我的蓝牙回调函数共享所有GUI句柄?我的解决方法是使用全局工作区,但如果可能的话,我想使用handles结构。

丹尼尔

使用签名函数创建您的蓝牙回调rdatac_Callback(hGuiObject, hBtObject, eventdata)现在,当在GUI回调中创建蓝牙对象时,便拥有了GUI对象的句柄。这应该传递给您的rdatac_Callback。您可以使用函数handle来实现@(hBtObject,eventdata)rdatac_Callback(hGuiObject, hBtObject, eventdata)rdatac_Callback始终使用所需的三个参数调用该函数,但只需将两个参数传递给匿名函数。hGuiObject取自创建匿名函数的工作空间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章