亿加合和智能车制作

标题: 关于基于matlab上位机串口通信问题 [打印本页]

作者: Trivial_pursuit    时间: 2017-2-7 19:21
标题: 关于基于matlab上位机串口通信问题
各位大神,我第一次用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


作者: fuqingxu    时间: 2017-2-10 15:04
用labview的路过




欢迎光临 亿加合和智能车制作 (http://www.znczz.com/) Powered by Discuz! X3.2