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