【MATLAB 串口调试+虚拟串口测试】
文章目录
- 前言
- 一、matlab 串口
- 二、测试串口
- 1.从系统中获取串口号
- 2.避免串口打开被占用
- 3. 安装虚拟串口
- 4. 打开串口助手和MATALB 进行测试
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
项目需要:
提示:以下是本篇文章正文内容,下面案例可供参考
一、matlab 串口
二、测试串口
1.从系统中获取串口号
% 获取所有可用的串口信息
% ports = serialportlist;
%
% % 显示串口信息
% for i = 1:length(ports)
% fprintf('Port %d: %s\n', i, ports(i).PortName);
% % 如果需要更多信息,可以访问其他字段,如:
% % fprintf(' Description: %s\n', ports(i).Description);
% % fprintf(' Manufacturer: %s\n', ports(i).Manufacturer);
% end% 获取所有可用的串口信息
ports = serialportlist; % 检查是否有可用的串口
if isempty(ports) disp('没有检测到任何串口设备。');
else % 显示串口信息 for i = 1:length(ports) fprintf('Port %d: %s\n', i, ports(i)); end
end% 获取所有可用的串口端口号
portNames = {ports}; % 这是一个单元数组 % 将单元数组转换为字符串数组(如果需要)
portNamesStr = string(portNames); % 在 MATLAB R2016b 及更高版本中可用 % 显示端口号
disp(portNamesStr);% 创建并打开串口
serialObj = serialport(portNamesStr, 9600);
serialObj.DataBits = 8;
serialObj.StopBits = 1;
serialObj.Parity = 'none'; % open(serialObj); % 发送数据
dataToSend = 'Hello, Serial Port!';
% fwrite(serialObj, dataToSend, 'char'); % 等待一段时间以接收数据(假设设备有延迟)
pause(2); % 读取数据
numBytesToRead = 100;
% receivedData = fread(serialObj, numBytesToRead, 'char=>char');
receivedData = read(serialObj, numBytesToRead, 'char');
receivedDataStr = char(receivedData); % 显示接收到的数据
disp('Received Data:');
disp(receivedDataStr); % 关闭串口
% close(serialObj);
clear serialObj;
2.避免串口打开被占用
matlab 调试打开一次串口后,下次就会被占用,必须关闭matlab在开才行,所以为了避免这个问题,要容错
代码如下(示例):
% 定义串口参数
% 创建并打开串口 serialComName = 'COM4';
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
完整程序
% 获取所有可用的串口信息
ports = serialportlist; % 检查是否有可用的串口
if isempty(ports) disp('没有检测到任何串口设备。');
else % 显示串口信息 for i = 1:length(ports) fprintf('Port %d: %s\n', i, ports(i)); end
end% 获取所有可用的串口端口号
portNames = {ports(2)}; % 这是一个单元数组 % 将单元数组转换为字符串数组(如果需要)
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% open(serialObj); % 发送数据
dataToSend = 'Hello, Serial Port!';
write(Serial_Obj, dataToSend, "uint8"); % 等待一段时间以接收数据(假设设备有延迟)
pause(2); % 读取数据
numBytesToRead = 100;
% receivedData = fread(serialObj, numBytesToRead, 'char=>char');
receivedData = read(Serial_Obj, numBytesToRead, 'char');
receivedDataStr = char(receivedData); % 显示接收到的数据
disp('Received Data:');
disp(receivedDataStr); % 关闭串口 clear Serial_Obj;
3. 安装虚拟串口
vspd.exe
一路点击安装
4. 打开串口助手和MATALB 进行测试
总结
为下一步guide做准备,连接下位机STM32 不成问题
学习使人快乐!
音乐使人愉悦!
日积月累使人充实和自信!