中少
2007-04-24, 17:36
RT。
最近正在学习这方面的东西。需要一个程序学习一下!!哪位大哥有帮忙介绍一下!!十分感谢了!!!:)
下面是编写的一个
串口接受的程序,但是却不能完成接收的功能。个人认为是不时 receivedata这个函数的调用时出错了!!
那位高手帮忙解决一下!!
%首先检验是打开串口操作还是关闭操作
%打开操作
if(strcmp(get(hObject,'string') , 'Open Serial Port'))
%建立一个serial object,并设置其参数(接收的终止符号为\n)
try
handles.serial = serial(handles.com,'BaudRate',handles.baud_rate,'DataBits',handles.dataBits,...
'Parity',handles.verifiedBits,'StopBits',handles.stopBit,'FlowControl',...
handles.flowControl,'terminator',char(13));
set(handles.serial,'OutputBufferSize',512000);
set(handles.serial,'InputBufferSize',512000);
handles.serial.BytesAvailableFcnMode = 'terminator';
%当接受到数据后如果碰到结束符\n就读入,调用receiveData函数
handles.serial.BytesAvailableFcn={'receiveData',handles};
guidata(hObject,handles);
%打开串口
fopen(handles.serial);
set(hObject,'String','Close Serial Port','foreGroundColor',[67/255,64/255,119/255]);
str = ['Serial Port ', handles.com , ' opened sucessfully!'];
set(handles.text3,'String',str,'fontweight','bold');
set(handles.pushbutton4,'enable','on');
set(handles.pushbutton5,'enable','on');
set(handles.pushbutton6,'enable','on');
catch
%进行出错处理
errmsg = lasterr;
errordlg([errmsg,char(10),' Can''t Open Serial Port : ',handles.com, char(10),' Please choose another Port!'],'Serial Port Open Error');
rethrow(lasterror);
end
%关闭串口操作
else
fclose(handles.serial);
set(hObject,'String','Open Serial Port','foreGroundColor',[1,0,0.5]);
str = ['Serial Port ', handles.com , ' closed sucessfully!'];
set(handles.text3,'String',str,'fontweight','bold');
set(handles.pushbutton4,'enable','off');
set(handles.pushbutton5,'enable','off');
set(handles.pushbutton6,'enable','off');
end
最近正在学习这方面的东西。需要一个程序学习一下!!哪位大哥有帮忙介绍一下!!十分感谢了!!!:)
下面是编写的一个
串口接受的程序,但是却不能完成接收的功能。个人认为是不时 receivedata这个函数的调用时出错了!!
那位高手帮忙解决一下!!
%首先检验是打开串口操作还是关闭操作
%打开操作
if(strcmp(get(hObject,'string') , 'Open Serial Port'))
%建立一个serial object,并设置其参数(接收的终止符号为\n)
try
handles.serial = serial(handles.com,'BaudRate',handles.baud_rate,'DataBits',handles.dataBits,...
'Parity',handles.verifiedBits,'StopBits',handles.stopBit,'FlowControl',...
handles.flowControl,'terminator',char(13));
set(handles.serial,'OutputBufferSize',512000);
set(handles.serial,'InputBufferSize',512000);
handles.serial.BytesAvailableFcnMode = 'terminator';
%当接受到数据后如果碰到结束符\n就读入,调用receiveData函数
handles.serial.BytesAvailableFcn={'receiveData',handles};
guidata(hObject,handles);
%打开串口
fopen(handles.serial);
set(hObject,'String','Close Serial Port','foreGroundColor',[67/255,64/255,119/255]);
str = ['Serial Port ', handles.com , ' opened sucessfully!'];
set(handles.text3,'String',str,'fontweight','bold');
set(handles.pushbutton4,'enable','on');
set(handles.pushbutton5,'enable','on');
set(handles.pushbutton6,'enable','on');
catch
%进行出错处理
errmsg = lasterr;
errordlg([errmsg,char(10),' Can''t Open Serial Port : ',handles.com, char(10),' Please choose another Port!'],'Serial Port Open Error');
rethrow(lasterror);
end
%关闭串口操作
else
fclose(handles.serial);
set(hObject,'String','Open Serial Port','foreGroundColor',[1,0,0.5]);
str = ['Serial Port ', handles.com , ' closed sucessfully!'];
set(handles.text3,'String',str,'fontweight','bold');
set(handles.pushbutton4,'enable','off');
set(handles.pushbutton5,'enable','off');
set(handles.pushbutton6,'enable','off');
end