MTALAB guide 串口简洁版1
文章目录
- 前言
- 二、串口guide
- 1. 打开软件检测所有串口并更新的界面弹式菜单
- 2. 选择串口
- 3.打开串口
- 4. 串口数据的发送
- 5. 获取edit 发送窗口上的内容发送出去
- 6.接收数据在edit 接收窗口上显示
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
项目需要:
提示:以下是本篇文章正文内容,下面案例可供参考
二、串口guide
1. 打开软件检测所有串口并更新的界面弹式菜单
% --- Executes just before UART1fig is made visible.
function UART1fig_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 UART1fig (see VARARGIN)% Choose default command line output for UART1fig
handles.output = hObject;% Update handles structure
guidata(hObject, handles);% UIWAIT makes UART1fig wait for user response (see UIRESUME)
% uiwait(handles.figure1);% 获取所有可用的串口信息 global portsports = serialportlist; % 检查是否有可用的串口
if isempty(ports) disp('没有检测到任何串口设备。');
else % 显示串口信息 for i = 1:length(ports) fprintf('Port %d: %s\n', i, ports(i)); end
end% 假设 handles.popupmenu1 是已经创建的 popupmenu 控件
% 创建一个包含多个字符串的单元格数组
% options = {'Option 1', 'Option 2', 'Option 3'}; % 将这个单元格数组设置为 popupmenu 的 'String' 属性
set(handles.po_search_serial, 'String', ports);
2. 选择串口
% --- Executes on selection change in po_search_serial.
function po_search_serial_Callback(hObject, eventdata, handles)
% hObject handle to po_search_serial (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)% Hints: contents = cellstr(get(hObject,'String')) returns po_search_serial contents as cell array
% contents{get(hObject,'Value')} returns selected item from po_search_serial
global varvar = get(handles.po_search_serial,'Value');switch varcase 1 % 选中第一行disp('第一行'); case 2 % 选中第二行disp('第二行'); case 3 % 选中第三行disp('第三行');
end
根据鼠标选择弹式菜单里面的选项来确定是选定了那个COM
3.打开串口
% --- Executes on button press in PB_Open_Close_serial.
function PB_Open_Close_serial_Callback(hObject, eventdata, handles)
% hObject handle to PB_Open_Close_serial (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)% % 获取所有可用的串口信息
% ports = serialportlist;
%
% % 检查是否有可用的串口
% if isempty(ports)
% disp('没有检测到任何串口设备。');
% else
% % 显示串口信息
% for i = 1:length(ports)
% fprintf('Port %d: %s\n', i, ports(i));
% end
% end
%
% % 假设 handles.popupmenu1 是已经创建的 popupmenu 控件
% % 创建一个包含多个字符串的单元格数组
% % options = {'Option 1', 'Option 2', 'Option 3'};
%
% % 将这个单元格数组设置为 popupmenu 的 'String' 属性
% set(handles.po_search_serial, 'String', ports);
global portsglobal var% 获取所有可用的串口端口号
portNames = {ports(var)}; % 这是一个单元数组 % 将单元数组转换为字符串数组(如果需要)
portNamesStr = string(portNames); % 在 MATLAB R2016b 及更高版本中可用 % 显示端口号
disp(portNamesStr);% 创建并打开串口 serialComName = portNamesStr;
serialBaudrate = 9600;
serialDataBit = 8;
serialCheckBit = 'none';
serialStopBit = 1;% 尝试打开串口
trySerial_Obj=serialport(serialComName,serialBaudrate,"Parity",serialCheckBit,"DataBits",serialDataBit,"StopBits",serialStopBit,"Timeout",1);text1 = '串口打开成功';disp(text1)catch% 串口打开失败text = '串口打开失败';disp(text)% 删除串口delete(Serial_Obj);
end
4. 串口数据的发送
% --- Executes on button press in pb_send_serial.
function pb_send_serial_Callback(hObject, eventdata, handles)
% hObject handle to pb_send_serial (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global Serial_Obj
% 发送数据
dataToSend = 'Hello, Serial Port!';
write(Serial_Obj, dataToSend, "uint8");
5. 获取edit 发送窗口上的内容发送出去
% --- Executes on button press in pb_send_serial.
function pb_send_serial_Callback(hObject, eventdata, handles)
% hObject handle to pb_send_serial (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global Serial_Obj
% 发送数据 editContent = get(handles.ed_sent, 'String');
disp(editContent);
dataToSend = 'Hello, Serial Port!';
disp(dataToSend);
write(Serial_Obj, editContent, "uint8");
效果
6.接收数据在edit 接收窗口上显示
要思考在哪个时间开启接收 ,时间到了暂时休息
global Serial_Obj
receivedData = read(Serial_Obj, numBytesToRead, 'char');
set(handles.ed_receive, 'String',receivedData ); receivedDataStr = char(receivedData); % 显示接收到的数据
disp('Received Data:');
disp(receivedDataStr);
总结
学习使人快乐!
音乐使人愉悦!
日积月累使人充实和自信!