【MATLAB 串口调试】

文章目录


前言

提示:这里可以添加本文要记录的大概内容:

项目需要:


提示:以下是本篇文章正文内容,下面案例可供参考

一、matlab 串口

二、测试串口

1.从系统中获取串口号

c 复制代码
% 获取所有可用的串口信息  
% 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在开才行,所以为了避免这个问题,要容错

代码如下(示例):

c% 复制代码
serialComName = 'COM4';
serialBaudrate = 921600;
serialDataBit = 8;
serialCheckBit = 'none';
serialStopBit = 1;
 
% 尝试打开串口
try
    Serial_Obj=serialport(serialComName,serialBaudrate,"Parity",serialCheckBit,"DataBits",serialDataBit,"StopBits",serialStopBit,"Timeout",1);
    text1 = '串口打开成功';
    disp(text1)
 
catch
    % 串口打开失败
    text = '串口打开失败';
    disp(text)
    % 删除串口
    delete(Serial_Obj);
end

总结

学习使人快乐!

音乐使人愉悦!

日积月累使人充实和自信!

相关推荐
在坚持一下我可没意见1 分钟前
Java 网络编程:TCP 与 UDP 的「通信江湖」(基于TCP回显服务器)
java·服务器·开发语言·笔记·tcp/ip·udp·java-ee
杜子不疼.14 分钟前
【Rust】异步处理器(Handler)实现:从 Future 本质到 axum 实战
android·开发语言·rust
学习编程之路15 分钟前
Rust内存对齐与缓存友好设计深度解析
开发语言·缓存·rust
无限进步_24 分钟前
C语言字符串连接实现详解:掌握自定义strcat函数
c语言·开发语言·c++·后端·算法·visual studio
Han.miracle25 分钟前
Java的多线程——多线程(二)
java·开发语言·线程·多线程
阿登林35 分钟前
Unity3D与Three.js构建3D可视化模型技术对比分析
开发语言·javascript·3d
弈风千秋万古愁42 分钟前
【PID】连续PID和数字PID chapter1(补充) 学习笔记
笔记·学习·算法·matlab
cherryc_1 小时前
JavaSE基础——第十二章 集合
java·开发语言
集成显卡1 小时前
Bun.js + Elysia 框架实现基于 SQLITE3 的简单 CURD 后端服务
开发语言·javascript·sqlite·bun.js
2501_938773991 小时前
Objective-C 类的归档与解档:NSCoding 协议实现对象持久化存储
开发语言·ios·objective-c