福感科技有限公司 欢迎您!
联系方式

    地址:北京市平谷区马坊镇金河北街17号院3号楼7层712

    电话:010-89968230

    网站:http://www.fgsense.com

你的位置:首页 > 新闻动态 > 行业新闻

matlab 读取串口传感器数据

2024-1-30 10:06:13      点击:

读取数据后,解析到相应的苏话剧格式用到的函数:

serialport   作用:连接到串行端口     

使用方法:参考链接  https://ww2.mathworks.cn/help/matlab/ref/serialport.html
readline 作用:从串行端口读取 ASCII 字符串数据行
使用方法:参考链接 https://ww2.mathworks.cn/help/matlab/ref/serialport.readline.html?s_tid=doc_ta
strsplit 作用:在指定分隔符处拆分字符串或字符向量
使用方法: 参考链接 https://ww2.mathworks.cn/help/matlab/ref/strsplit.html?searchHighlight=strsplit&s_tid=srchtitle_strsplit_1
str2double 作用:将字符串转换为双精度值

使用方法: 参考链接 https://ww2.mathworks.cn/help/matlab/ref/str2double.html?s_tid=doc_ta 

范例代码:


% ======注意:本程序需要在arduino端代码使用Serial.print(),并以逗号分隔========
% ======例如,arduino端将x,y两个数据传输到COM3口,arduino端代码为
% ============Serial.print(x);Serial.print(",");
% ============Serial.print(y);
% ============Serial.print("\n");

clear;clc;clf

% 自定义参数
N=3000;                          % 总数据量长度
n1=100;                          % *近数据量长度

% 读取串口字符串,并转化为数据
arduinoObj=serialport("COM3",9600);      % 串口通信COM3,波特率9600(可根据实际情况修改)
data = readline(arduinoObj);            % 读取 ASCII 字符串数据行
n=length(strsplit(data,','));           % 在逗号分隔符处拆分字符串,并得到拆分后的长度

% 初始化用来存储数据的矩阵
B=zeros(N,n,'double');                 % 初始化矩阵B,用来存储总数据。
A=zeros(n1,n,'double');                % 初始化矩阵A,用来存放*近100组数据
t=zeros(n1,1,'double');                % 初始化数组t,用来存放*近的100个时间数

% 更新画图
for kk=1:N                                 % 总共存N行数据
    str = readline(arduinoObj);            % 从串口读取字符串
    data=str2double(strsplit(str,','));    % 在逗号分隔符处拆分字符串,并将除逗号外的字符串转化为double数据

    B(kk,:)=data;                          % 把所有数据存储到B矩阵
    figure(n+1)
    plot(1:kk,B(1:kk,2));                    % 画出B的第二列数据(可根据实际情况修改)

% 如果需要画*新的n个数据,则启用以下代码,否则可注释掉
%     A=circshift(A,-1);                     % 把A矩阵向下循环平移
%     A(end,:)=data;                         % 把A矩阵*后一行数替换为data。以上两行的作用是保证A矩阵的数据为*新的100组数据
%     t=circshift(t,-1);
%     t(end)=kk;
%     for ii=n:-1:1
%         figure(ii)
%         plot(t,A(:,ii));
%     end
end

delete(arduinoObj);                    % 删除端口,以便能在arduino中修改

Copyright 2019 www.fgsense.com

福感科技有限公司 版权所有 All Rights Reserved

京ICP备20002031号

010-89968230