MATLAB动画显示串口数据【实例】(修正链接)

原创 2013年01月04日 02:32:30
function callback(s,BytesAvailable,p)
    global i;
    global t;
    global x;
    global m;
    
%     p = plot(t,m,...
%              'EraseMode','background','MarkerSize',5);
    out = fscanf(s) %read data from s

    data = str2num(out);
    if data>-2 & data < 2 %detect if data is legal
    %    disp('*******data comes! \n');
    t=[t 0.01*2*pi*i];   %0 0.1 0.2 0.3.. %Matrix 1*(i+1), column is increasing
    m=[m data]; %Matrix 2*(i+1), 2row, i+1 column.
    %http://blog.csdn.net/sonictl
    %set(p(1),'XData',t,'YData',m(1,:))
    %set(p(2),'XData',t,'YData',m(2,:))
    set(p,'XData',t,'YData',m(1,:))

    %http://blog.csdn.net/sonictl
    drawnow
    x = x + 3.6/360*2*pi;   % x = x+0.1
    axis([x x+2*pi -1.5 1.5]);
    pause(0.1);
    i = i+1;
    end
    %http://blog.csdn.net/sonictl end

MATLAB动画显示串口数据【实例】


经过几天的学习,现在能实现串口数据的实时plot并记录在MATLAB变量中。

After a few days' learning, we can implement thatreal-time plot the data from serial port.

先看一下演示的视频吧:(see demo video)

http://v.youku.com/v_show/id_XNDk2OTA1OTQw.html

升级版(双数据接收,绘图):http://v.youku.com/v_show/id_XNDk3NzM0NzE2.html


The outline of the video:

演示视频大纲:
  1.介绍系统构成
  2.介绍板载C语言程序
  3.用Linux界面演示由MATLAB发送给目标板的命令,及理论返回值。
  4.介绍MATLAB本实例的m文件的主要功能,发送的命令,判断,画图
  5.演示整个MATLAB程序的实现效果

完成这个实例需要学习“MATLAB串口操作官方教程.pdf” 和 "Matlab中使用Plot函数动态画图方法总结", 请点击。
To finish this subject, we need firstly learn"Official tutorial for MATLAB serial port operation "

板卡产生数据源程序(C语言): The source code for generating original data on the TLL main board.
--------------------
#include"stdio.h"
#include"math.h"
#include"string.h"


#define pi 3.1415926


void delay(int a){
	int i,j,delay;
	for(i = 0 ;  i < 1000*a; i++){
		delay = 0;
		for(j = 0; j < 1000*a; j++){
			delay = delay+1;
		}
	}
}


int main(){
	float angle, x, y,rad;
	int i,N,dltime;
	angle = 0;
	//getchar();
	printf("input the num of circles, delay time: ");
	scanf("%d,%d", &N, &dltime);
	for (i = 0; i < 100*N ; i++){
		angle = angle + 3.6;
		rad = angle/180*pi;
		x = cos(rad);
		y = sin(rad);
		printf("%f \n", x);
		delay(dltime);
	}
	return 0;


}

--------------------------------------------

MATLAB 接收数据主程序serial-test.m:

The main program for receiving data in MATLAB:

clc;

%%
% Use EraseMode,draw dynamically. Change axis dynamically.
% Multi-Line drawing line
global i;
global t;
global x;
global m;
t = [0];                    % initialize
m = [0];                    % initialize
i = 0;
x = -pi ;

p = plot(t,m,...
   'EraseMode','background','MarkerSize',5);
axis([x x+2*pi -1.5 1.5]);   % x = [-1.5 pi, 0.5 pi]
grid on;

%%

s = serial('COM3');     % creat serial port obj
set(s,'BaudRate',115200,'DataBits',8,'StopBits',1,...
    'Parity','none','FlowControl','none');  % set properties for serial

s.BytesAvailableFcnMode = 'terminator'; % byte number or terminator
s.BytesAvailableFcn = {@callback,p};   % {@mycallback,time}

fopen(s);

fprintf(s,'cd /home');
pause(1);           % pause function, 1s
fprintf(s,'./matlab-serial');
pause;           % pause function
fprintf(s,'1,1');

pause;      %right here is receiving the data and plot
fclose(s);
delete(s)
clear s
close all;
clear all;

--------------------------------------------

MATLAB 接收数据,判断,动态绘图,回调函数 callback.m:

The Callback function for receiving, judge, plotting in MATLAB.



Explore more:  Real-time plotting in MATLAB for the Three axis accelerometer data 

三轴力传感器数据在MATLAB中实时绘图显示:

http://blog.csdn.net/sonictl/article/details/8495973


--------------------------------------------
版权声明:sonictl原创文章,转载注明,否则读者享用不了后续服务,感谢!

Matlab---串口操作---数据采集篇

matlab功能强大,串口操作也很简单,相信看过以下两个实验你就能掌握咯!开始吧! 实验1: 从电脑COM2口读取数据,并将数据保存在TXT文件中,方便数据分析,下面是M脚本: %名 称:Matlab...
  • guomutian911
  • guomutian911
  • 2014年11月17日 11:48
  • 12394

matlab与stm32之间利用串口通信记录

stm32与matlab之串口通信 涉及到的函数serial,fopen,fclose, instrfindall,instrhwinfo, fprintf,fscanf,fwrite,fread,i...
  • feihai_
  • feihai_
  • 2017年12月10日 23:35
  • 175

Matlab中fread函数用法

参考:点击打开链接    “fread”以二进制形式,从文件读出数据。 语法1:[a,count]=fread(fid,size,precision) 语法2:[a,count]=f...
  • gll028
  • gll028
  • 2014年02月24日 15:39
  • 1971

MATLAB fread函数分析

今天起开始总结下MATLAB的文件操作函数。MATLAB的确用起来很方便,前提是你了解它的函数~       MATLAB的帮助文档看的那叫一个似懂非懂啊,特此总结。对我而言, fread的主要调用...
  • xwdpepsi
  • xwdpepsi
  • 2012年12月27日 14:21
  • 15323

matlab读取串口数据并显示曲线

matlab程序读取单片机通过串口传来的IMU角度数据,并用曲线显示出来。 上传的值为float型,每个数据后有回车符。范围90~-90   主文件 serial_test2.m %% clc...
  • qwertyuj
  • qwertyuj
  • 2013年09月27日 18:50
  • 28534

matlab之串口数据采集绘图

实现数据显示绘图功能,使用M脚本文件和M函数文件。 第一个文件连接串口和打开串口,设置了串口的一些参数和触发事件。连接串口COM3。 第二个文件是回调函数,相当于其他语言中例如C语言的中断函数 ...
  • sinat_23338865
  • sinat_23338865
  • 2016年09月30日 11:43
  • 4720

matlab中fread函数用法

fread函数常见用法:1、A=fread(fileID,sizeA,precision,skip,machinefmt)  2、A=fread(fileID) 3、fread(fileID,size...
  • meizan3603
  • meizan3603
  • 2017年03月28日 09:48
  • 1156

MATLAB fread函数分析

今天起开始总结下MATLAB的文件操作函数。MATLAB的确用起来很方便,前提是你了解它的函数~       MATLAB的帮助文档看的那叫一个似懂非懂啊,特此总结。对我而言, fread的主要调用...
  • fall221
  • fall221
  • 2012年02月27日 21:12
  • 22767

MATLAB GUI设计之读取串口数据并计算绘图

在操作某些模块的时候,模块会返回数据到串口,我们通过读取串口的数据,分析模块的运行情况是比较常见的方法。而matlab也有读取串口数据的能力,并加上其强大的绘图能力,可以让数据更为直观的可视化,便于用...
  • kabuto_hui
  • kabuto_hui
  • 2015年11月15日 23:12
  • 8265

Matlab接收串口数据

Matlab接收串口助手发送的txt文档数据,保存为以当前时间命名的txt文档。 调试过程中主要遇到几个问题, 1.保存为txt的文件名如何自动创建 最终选择了获取系统当前时间格式为xxxx-x...
  • neill_ch
  • neill_ch
  • 2015年02月14日 08:23
  • 3997
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MATLAB动画显示串口数据【实例】(修正链接)
举报原因:
原因补充:

(最多只允许输入30个字)