Matlab串口函数
- 格式:doc
- 大小:99.50 KB
- 文档页数:11
Matlab串口函数
2009-09-25 21:22
Matlab是数学计算的强大工具,它以矩阵作为数据操作的基本单位,广泛应用在以矩阵运算为主要工作方式的数理统计、自动控制、数字信号处理、动态系统仿真等领域。Matlab便捷灵活、操作简单、处理功能强大,因而利用Matlab对采
集到的ABS试验数据进行分析处理是非常合适的,关键问题是如何将数据从ECU传到计算机。
Matlab支持面向对象技术,用一个对象将计算机串口封装起来,只要创建串口对象,对串口对象操作就是对串口操作,非常方便。使用serial函数就可创建串口对象,串口对象有很多属性[4],通过定义串口对象的属性,能定义串口的通信模式,从串口对象属性也能了解串口的状态。要想通过串口传输数据,必须先用fopen函数打开串口;数据传输结束后要用fclose。函数关闭串口。表1列出了常用的与串口操作有关的函数。
表1 Matlab串口函数介绍
_____________________________________________________
函数 说明
_____________________________________________________
serial 创建一个串口对象,格式:s = serial('coml' )
fopen 打开串口对象,格式:fope n( s)
fread 读取串口数据,格式: fread(s)
fclose 关闭串口对象,格式:fclose(s)
free 解除Matlab对串口对象的控制,使
serial 其他程序能对该串口进行读写操作
delete 删除对象s,格式:delete( s)
clear 从工作空间中删除对象s,格式:clear(s)
___________________________________________________
当建立了一个串口对象后,可以利用Matlab对其参数进行设置,包括对波特率、同步或异步读取方式、读取或写数据的等待时间等。本文以波特率的设置为例来说明串口参数的设置方法。
波特率的设置,一般有两种方法:(1)在创建串口对象时设定波特率:s=serial(`coml' ,'baudrate','9600'); (2)用set命令:set(s,'baudrate','9600')。
matlab 串口编程
2009年06月10日 星期三 下午 11:43
function serialdwj
%本程序使用的是虚拟串口软件VSPD虚拟的COM2和COM3来测试的
%使用COM1也可以使用 已经经过测试了
%如果要使用 请使用COM1口 就可以与下位机通信了
obj1=instrfind('Type','serial','Port','COM3','Tag','');
%COM2为测试串口
obj2=instrfind('Type','serial','Port','COM2','Tag','');
if isempty(obj1)
obj1=serial('COM3');
%新建测试串口
obj2=serial('COM2');
else
fclose(obj1);
obj1=obj1(1);
%打开串口
fclose(obj2);
obj2=obj2(1);
end
set(obj1,'BaudRate',9600,'FlowControl','none','Timeout',0.1)
set(obj1,'Inputbuffersize',512,'Outputbuffersize',512,'parity','none','databits',8,'stopbits',1);
%COM2的属性设置
set(obj2,'BaudRate',9600,'FlowControl','none','Timeout',0.1)
set(obj2,'Inputbuffersize',512,'Outputbuffersize',512,'parity','none','databits',8,'stopbits',1);
fopen(obj1);
%打开串口
fopen(obj2);
k=1;
datas=zeros([1,100]);
while(k<101)
if obj1.BytesAvailable
datas(1,k)=fread(obj1,1);
end
k=k+1;
plot(datas);
%向测试串口中写一个数据数据 在COM3中就可以接受到该数据
fwrite(obj2,round(255*rand(1)));
pause(1);
end
fclose(obj1); delete(obj1);
%删除测试串口
fclose(obj2);
delete(obj2);
end
%现在使用的m文件来显示的
%到后来有机会就使用gui界面来显示 MATLAB接收串口数据GUI界面
2009-09-19 12:42
工作流程:AD7818采样模拟信号,12bits输出,串口将数据发送给PC。串口发送波特率57600Bd,数据位8位,停止位一位。每个数据分两次发送,高四位补零。设计GUI界面接收串口数据并显示波形。
GUI界面如下:
功能描述:
1.选择串口,点击START,即等待串口发送数据,数据缓存4000bytes。接收缓存区满后绘图,同时显示最大电压值和波形功率值。
2.File菜单下有Import Data 和 Export Data功能,可将电压数据保存到txt文件中,同时可读取txt中的数据并显示相关波形。
3.Image菜单下有Open Image 和 Save Image功能,可将波形保存成图片格式,同时可打开图片显示在绘图窗口。
Matlab源代码:
function varargout = serial1(varargin)
% SERIAL1 M-file for serial1.fig
% SERIAL1, by itself, creates a new SERIAL1 or raises the existing
% singleton*. %
% H = SERIAL1 returns the handle to a new SERIAL1 or the handle to
% the existing singleton*.
%
% SERIAL1('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in SERIAL1.M with the given input arguments.
%
% SERIAL1('Property','Value',...) creates a new SERIAL1 or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before serial1_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to serial1_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help serial1
% Last Modified by GUIDE v2.5 18-Sep-2009 13:30:08
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @serial1_OpeningFcn, ...
'gui_OutputFcn', @serial1_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
%global s selected_com selected_baud selected_databits selected_stopbits selected_parity
selected_flowctrl
% --- Executes just before serial1 is made visible.
function serial1_OpeningFcn(hObject, eventdata, handles, varargin)