我知道Matlab GUI回調已經在這裏討論了數百次,但我想我遇到了一個特殊的問題。Matlab GUI中嵌套的藍牙回調
我知道如何在不同的GUI回調之間共享數據(我使用documentation中描述的手柄結構)。我用GUIDE創建了我的GUI。
有一個按鈕,在其回調函數中創建一個藍牙手柄,它工作得很好。一旦藍牙連接建立並收到一定數量的字節,就會觸發藍牙回撥功能(由bluetoothhandle.BytesAvailavailableFcn = @rdatac_Callback
設置)。
我的藍牙回調函數的頭看起來是這樣的:
function rdatac_Callback(hObject, eventdata)
的hObject
包含藍牙手柄,eventdata
由此引發的回調(在這種情況下,它被稱爲「信息bytesAvailable」)的事件。
此函數與所有其他GUI回調位於同一個文件中。問題是我無法訪問藍牙回調內的GUI的句柄結構。我嘗試添加「手柄」作爲第三個輸入參數,但它是空的。我也嘗試通過生成我自己的句柄結構
h = guidata(findobj('Name','BCI'));
其中BCI是GUI窗口的名稱。這在任何GUI回調函數中都可以很好地工作,但在藍牙回調中它無法找到其他元素,所以藍牙回調函數有它自己的「範圍」。
所以我的問題是:我如何與我的藍牙回調函數共享所有的GUI句柄?我的解決方法是使用全局工作區,但我希望儘可能使用句柄結構。
非常感謝,完美的作品! – Andy
還有一件事:我嘗試在我的藍牙回調中修改字段'handles.data'並將其保存爲'guidata(handles.figure1,handles)''就像我在GUI回調中所做的那樣(僅用於'因爲在Bluetooth回調中沒有'hObject'),所以這裏不使用'hObject',而是數據永遠不會被存儲。每次觸發Bluetooth-callback時,handles.data都是空的。我在GUI打開Fcn中使用'handles.data = [];'在'handles'結構中聲明這個新字段。 – Andy