当前位置: 首页 > news >正文

【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 不成问题
学习使人快乐!
音乐使人愉悦!
日积月累使人充实和自信!


http://www.mrgr.cn/news/53037.html

相关文章:

  • 解决eclipse自动补全代码后会删除后面标黄的代码
  • Flink SQL+Hudi数据入湖与分析实践
  • 法人供应商绩效数据线上化PRD
  • 机械转行网络安全自学经历,零基础学网络安全,血泪总结的干货,零基础入门到精通,收藏这篇就够了
  • 邮件营销标题策略:提升邮件打开率的秘诀?
  • 如何使用代理保护电子邮件?
  • 【项目案例分享|易知微智慧工厂车间生产线数字孪生管理系统
  • 多张图片合并成一张怎么操作?8种合并方法值得你尝试一下!
  • 最详细的Python安装教程
  • 公司新来一个同事,把枚举运用得炉火纯青...
  • 数据抓取时,使用动态IP要注意哪些?
  • 关于小程序审核需要提交订单列表页面path的修改办法
  • Go程序的一生——Go如何跑起来的?
  • 【含文档】基于Springboot+Vue的城市公交在线查询系统(含源码+数据库+lw)
  • 【Ansiable】ansible的模块和主机清单
  • Jmeter 分布式压测
  • 【echart 数据大屏常用图表配置-柱状图】
  • 自动化运维工具——ansible
  • 打包和部署
  • 现代物流管理:SpringBoot技术突破