0

我编写了以下简单的 GUI 来执行此操作,但我想用来从远程计算机接收数据的回调函数 (RXDATA) 仍然没有执行。

function com_test_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to com_test (see VARARGIN)
handles.t_rzm = tcpip('169.254.181.51', 51000);
set(handles.t_rzm,'ByteOrder','littleEndian');
fopen(handles.t_rzm);
handles.t_rzm.BytesAvailableFcn = @RXDATA;
% Choose default command line output for com_test
handles.output = hObject;
% the remote computer is sending the data
% Update handles structure
guidata(hObject, handles);
function RXDATA(hObject, eventdata, handles) % The callback function supposed to get data
% handles = guidata(hObject);
disp('yes')
dum_PB_Callback(handles.dum_PB,event,dat)
guidata(handles.dum_PB,handles) %% function ends
guidata(hObject, handles);

这是向远程 PC 中的应用程序发送命令以选择数据项的子程序功能

我还定义了一个虚拟按钮来触发 RXDATA 功能,但它没有帮助。

% --- Executes on button press in dum_PB. (Dummy Push Button)
function dum_PB_Callback(hObject, eventdata, handles)
% hObject    handle to dum_PB (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
disp('dum_PB_Callback')
% if handles.UserData.sync==1
handles.t_rzm.BytesAvailableFcn = @RXDATA;
% end
guidata(hObject,handles) %% dummy button function ends
4

1 回答 1

0

我想我可以看到你的问题。我将强调错误或添加代码。

检查下面的代码。

handles.t_rzm = tcpip('169.254.181.51', 51000);

set(handles.t_rzm,'ByteOrder','littleEndian');

handles.t_rzm.BytesAvailableCnt = (Your Data Size)

handles.t_rzm.BytesAvailableMode = (Your Data Type)

handles.t_rzm.BytesAvailableFcn = @RXDATA;

fopen(handles.t_rzm);

function RXDATA(hObject, eventdata) // ← Only 2 Parameters 

然后每当接收到数据时,回调 RXDATA 函数。

如果要使用句柄等参数,

handles.t_rzm.BytesAvailableFcn = {@RXDATA,handles};

接着

function RXDATA(hObject, eventdata, handles)
于 2018-04-25T14:40:06.093 回答