matlab 读取串口传感器数据
2022/12/10 点击:
读取数据后,解析到相应的苏话剧格式用到的函数:
serialport 作用:连接到串行端口
使用方法:参考链接 https://ww2.mathworks.cn/help/matlab/ref/serialport.htmlreadline 作用:从串行端口读取 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中修改
- 上一篇:三维环境下的左手和右手坐标系相互转换方法 2023/2/7
- 下一篇:Csv文件操作(创建、读取、写入、修改) 2022/9/11