Matlab GUI 콜백은 여기에서 수 백 번 논의되었지만 특별한 문제가 발생했다고 생각합니다.Matlab GUI에서 중첩 된 블루투스 콜백
다른 GUI 콜백간에 데이터를 공유하는 방법을 알고 있습니다. (나는 documentation에서 설명한대로 handles-structure를 사용합니다). GUI로 GUIDE를 만들었습니다.
콜백 함수에 블루투스 핸들을 생성하는 푸시 버튼이 하나 있는데, 이는 제대로 작동합니다. 블루투스 연결이 설정되고 일정량의 바이트가 수신되면 블루투스 콜백 기능이 실행됩니다 (bluetoothhandle.BytesAvailavailableFcn = @rdatac_Callback
으로 설정).
내 블루투스 콜백 함수의 헤더는 다음과 같습니다
hObject
function rdatac_Callback(hObject, eventdata)
는 블루투스 핸들, (그것은 "됨 bytesAvailable"라고이 경우) 콜백을 트리거 eventdata
이벤트를 포함합니다.
이 기능은 다른 모든 GUI 콜백과 동일한 파일에 있습니다. 문제는 블루투스 콜백 내에서 GUI의 핸들 구조에 액세스 할 수 없다는 것입니다. 세 번째 입력 매개 변수로 "handles"을 추가하려고 시도했지만 비어 있습니다. 또한 자신의 핸들 구조를 생성하려고 시도했습니다.
h = guidata(findobj('Name','BCI'));
여기서 BCI는 GUI 창의 이름입니다. 이것은 모든 GUI 콜백 기능에서 완벽하게 작동하지만, 블루투스 콜백 내부에서는 다른 요소를 찾을 수 없으므로 블루투스 콜백은 고유 한 "범위"를 갖습니다.
내 질문은 : 어떻게 모든 블루투스 콜백 기능과 함께 GUI를 처리 할 수 있습니까? 내 해결 방법은 글로벌 작업 공간을 사용했지만 가능하면 핸들 구조를 사용하고 싶습니다.
대단히 고마워요, 완벽하게 작동합니다! – Andy
한 가지 더 : 저는 블루투스 콜백에서'handles.data' 필드를 수정하고 GUI 콜백에서했던 것처럼'guidata (handles.figure1, handles) '와 함께 저장하려고했습니다 (단지' 블루투스 콜백에'hObject'가 없으므로'hObject' 대신에 handles.figure1'을 사용합니다.), 데이터는 저장되지 않습니다. 블루투스 콜백이 트리거 될 때마다'handles.data'는 비어 있습니다. GUI에서 'handles.data = [];'를 사용하여 Fcn을 열고이 새로운 필드를'handles' 구조체에 선언합니다. – Andy