济南市商务局官方网站南沙seo培训
恩啊!!!
函数就是罗老师你的串口通讯中的bytes函数function bytes(obj, event, handles);
我只是在其中加了一些画图语句,但要使这些画图函数得到的句柄更新,以便在后边使用。。。
函数如下:
function bytes(obj, event, handles)
% 串口的BytesAvailableFcn回调函数
% 串口接收数据
%% 获取参数
strRec = getappdata(handles.figure1, 'strRec'); %获取串口要显示的数据
numRec = getappdata(handles.figure1, 'numRec'); %获取串口已接收数据的个数
isStopDisp = getappdata(handles.figure1, 'isStopDisp'); %是否按下了【停止显示】按钮
isHexDisp = getappdata(handles.figure1, 'isHexDisp'); %是否十六进制显示
isShow = getappdata(handles.figure1, 'isShow'); %是否正在执行显示数据操作
%% 若正在执行数据显示操作,暂不接收串口数据
if isShow
return;
end
%% 获取串口可获取的数据个数
n = get(obj, 'BytesAvailable');
%% 若串口有数据,接收所有数据
if n
%% 更新hasData参数,表明串口有数据需要显示
setappdata(handles.figure1, 'hasData', true);
a= fread(obj, n, 'uint8');
%% 若没有停止显示,将接收到的数据解算出来,准备显示
if ~isStopDisp
%% 根据进制显示的状态,解析数据为要显示的字符串
if ~isHexDisp
c = char(a');
else
strHex = dec2hex(a')';
strHex2 = [strHex blanks(size(a, 1))];
c = strHex2(
';
end
%% 更新已接收的数据个数
numRec = numRec + size(a, 1);
%% 更新要显示的字符串
strRec = [strRec c];
end
%% 以下是我加的代码……
global dataplot sudu duoji chuangganqi1 chuangganqi2
dataplot=str2num(strRec);
[m,n]=size(dataplot);
if (m>0)&(n>0)
global sudu duoji chuangganqi1 chuangganqi2
sudu=dataplot(:,1);
duoji=dataplot(:,2);
chuangganqi1=dataplot(:,3);
chuangganqi2=dataplot(:,4);
chuangganqi3=dataplot(:,5);
chuangganqi4=dataplot(:,6);
h_sudu=plot(sudu,'-r*','Parent',handles.plot_sudu);
set(handles.plot_sudu,'XLim',[m-50,m]);
h_duoji=plot(duoji,'-k*','Parent',handles.plot_duoji);
set(handles.plot_duoji,'XLim',[m-50,m]);
h_chuangganqi12=plot([chuangganqi1 chuangganqi2 chuangganqi1-chuangganqi2],'-*','Parent',handles.plot_chuangganqi12);
set(handles.plot_chuangganqi12,'XLim',[m-50,m]);
h_chuangganqi34=plot([chuangganqi3 chuangganqi4 chuangganqi3-chuangganqi4],'-*','Parent',handles.plot_chuangganqi34);
set(handles.plot_chuangganqi34,'XLim',[m-50,m]);
这里是更新句柄,,,但有错啊……
% handles.plot_sudu=h_sudu;
% guidata(obj,handles);
% handles.plot_duoji=h_duoji;
% guidata(obj,handles);
% handles.plot_chuangganqi12=h_chuangganqi12;
% guidata(obj,handles);
% handles.plot_chuangganqi34=h_chuangganqi34;
% guidata(obj,handles);
end
%% 更新参数
setappdata(handles.figure1, 'numRec', numRec); %更新已接收的数据个数
setappdata(handles.figure1, 'strRec', strRec); %更新要显示的字符串
end