文章目录
前言
提示:这里可以添加本文要记录的大概内容:
项目需要:
提示:以下是本篇文章正文内容,下面案例可供参考
一、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
总结
学习使人快乐!
音乐使人愉悦!
日积月累使人充实和自信!