clc
clear
close all
f = figure;
hx = animatedline('Color', 'r', 'LineWidth', 2);
hy = animatedline('Color', 'g', 'LineWidth', 2);
hz = animatedline('Color', 'b', 'LineWidth', 2);
title('test Data v/s Time');
xlabel('Time (in s)');
ylabel('Speed (in m/s)');
legend('XSpeed', 'YSpeed', 'ZSpeed');
a=1;
i=1;
b=0;
speed=0;
freeports = serialportlist("available");%列出空闲串口列表
seri = serialport("COM3",115200);
%串口格式
seri.Parity="none";
seri.StopBits=1;
seri.DataBits=8;
seri.ByteOrder="little-endia";%stm32默认是小端模式
%检查终止符检查默认的 ASCII 终止符。
%注意,一般LF是换行,就是\n,所以在stm32端发送数据之后,需要再发送一个\n;
%也可以更改configureTerminator(device,"CR"),CR对应\r回车
seri.Terminator
%必须将这个tic放在这里,前面搜索串口等会花费时间,在这里开始计算时间画图
flightTime =100;
tObj = tic;
while( floor(toc(tObj)) < flightTime)
fprintf("toc=%f",floor(toc(tObj)));
tStamp = toc(tObj);
%串口stm32发送数据过来
%例子:在stm32定义一个浮点数将浮点数和换行符发送,在matlab中用readline读取
%readline默认是最后一个是LF,将LF前的数据赋值到一个变量中,是字符串格式
%然后用str2double函数将字符串编程浮点数,然后绘图出来。
%float ix=32.56;
%printf("%f",ix);
%printf("\n");
A=readline(seri);%读取字符串
disp(A); %显示出来,看对不对
data0(i)= str2double(A);%变成浮点数,后面用来计算
disp(data0(i));%显示出来 看对不对
if ~isempty(A)%如果有变量进来,那么将数据假如曲线中,加点
addpoints(hx, tStamp,data0(i)); %添加到x曲线,图中有桑跳线
end
% addpoints(hy, tStamp, speed+1);
% addpoints(hz, tStamp, speed+2);
drawnow;
pause(0.1);
i=i+1;
% keyv=input('');
% if (keyv=='P') % 设置停止条件
% return;
% end
end
%将变量a,speed放在diydata.mat文件中,不然把图形也放进去文件较大。
%会覆盖之前的文件的额数据
save diydata a speed data0
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include <math.h>
#include "sys.h"
int main(void)
{
float ix=125.32;
delay_init(168);
uart_init(115200);
delay_ms(10);
while(1)
{
printf("%f",ix);
printf("\n");
delay_ms(200);
ix=ix+2.5f;
}
}
|