注册会员
- 积分
- 152
- 威望
- 96
- 贡献
- 30
- 兑换币
- 59
- 注册时间
- 2016-1-25
- 在线时间
- 13 小时
- 毕业学校
- 哈尔滨工业大学威海校区
|
各位大神,我第一次用matlab尝试写上位机,我是按照网上的资料来写的。可是在尝试的过程中始终无法正常的打开串口,这是我打开串口部分的程序,里面的mycallback是处理读回数据的程序,串口号是由另一个push_button的返回函数显示在界面上选择后,在COM_value那里体现的,代码如下,图片在附件里。function pushbutton1_Callback(hObject, eventdata, handles)
global s
COM_value=get(handles.COM_menu,'value');%获取自己选择的正确串口
BAUD_value=get(handles.BAUD_menu,'value');%获取自己选择的正确波特率
getcom=instrhwinfo('serial');
validcom=getcom.SerialPorts;%获取有效串口号
%set(handles.COM_menu,'string',COM_value);%在串口栏显示有效串口
%获取有效的menu的值
%currentcom={'COM1','COM2','COM3','COM4','COM5','COM6','COM7','COM8','COM9','COM10','COM11','COM12','COM13','COM14','COM15','COM16','COM17','COM18','COM19','COM20'};
currentbaud={300 9600 115200};
%judge0=strcmpi(currentcom{COM_value},validcom);%检查有效串口和设置串口是否一致,一致为1否则为0
%if(judge0==1)
s=serial(validcom(COM_value),'Baid_Rate',currentbaud(BAUD_value),'DataBits',8,...%创建串口备注程序在这里,无法正常运行
'Parity','NONE','StopBits',2,...
'InputBufferSize',1000,... %接收缓冲值最大值为1000
'TimeOut',1,...
'TimerPeriod', 0.1,... %每0.1秒调用一次接收的回调函数
'timerfcn', {@mycallback, handles});
%else
% errordlg('无效串口','提示','replace');
%end
string=get(handles.pushbutton2,'string');
if(strcmpi(string,'停止')==1)
set(handles.pushbotton2,'string','开始');
%关闭串口允许修改menu
set(handles.COM_menu,'Enable','on');
set(handles.BAUD_menu,'Enable','on');
%查找串口对象
scoms=instrfind;
%尝试停止,关闭,删除串口对象
stopasync(scoms);
fclose(scoms);
delete(scoms);
else
% if(judge0==1)
set(handles.pushbotton2,'string','停止');
%打开串口后禁止修改menu
set(handles.COM_menu,'Enable','off');
set(handles.BAUD_menu,'Enable','off');
fopen(s); %打开串口
% end
end
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|