注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

苍茫大地的博客

 
 
 

日志

 
 
关于我

盒子里的梦想

文章分类
网易考拉推荐

在matlab中打开串口(转载他人日志)  

2012-05-04 18:40:02|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

上位机通过串口向下位机发送命令实现对下位机的控制,并实时地接受下位机传送过来的数据,对其分析处理,将结果用图形显示并存储,完成人机交互过程。
    Matlab并不具备直接访问硬件的能力,但是支持面向对象技术,通过调用Instrument Control Toolbox中的serial类函数来创建串口对象,对串口对象操作就是对串口操作,使用起非常方便。同时,Matlab封装的串口对象支持对串口的异步读写操作,使得计算机在读写串口时能同时进行其他处理工作,因而能大大提高计算机执行效率。Matlab用多线程技术实现这种异步操作,通过异步读写设置,计算机在执行读写串口函数时能立即返回不必等待串口把数据传输完毕, 当指定的数据传输结束时就触发事件,执行事件回调函数,可以在事件回调函数中编程,进行数据处理,这样就不会造成因等待串口传输数据引起的时间浪费。
4.1 Matlab下串口编程
MATLAB的Instrument Control Toolbox提供了 MATLAB与仪器仪表通信的功能 ,它支持 GPIB 通用接口总线 、VISA、TCP/ IP、UDP、RS2232等多个协议 ,具有同步和异步读写功能以及事件处理和回调操作功能,可读写和记录二进制和ASCII文本数据。与串口有关的主要函数如下[3]:
(1)建立串口对象函数:obj=seril(’port’,’property name’,propertyvalue……),其中主要的属性有:baudrate(波特率),databits(数据位),parity(校验方式),stopbits(终止位)等,可以在初始化时进行赋值或者使用set函数。
(2)打开串口设备对象:fopen(obj)
(3) 串口读写操作:当matlab通信数据采用二进制格式时,读写串口设备的命令为fread()和fwrite();当通行数据采用文本(ASCII)格式时,读写串口设备的命令为fscanf()和fprintf()。
(4)关闭并清除设备对象:
fclose(obj);%关闭串口设备对象
delete(obj);%删除内存中的串口设备对象
基于本系统串口通信协议,对串口对象的读写部分程序如下:
obj=serial(’com1’,’baudrate’,9600,’parity’,’none’,’databits’,8,’stopbits’,1);%初始化串口
fopen(obj);%打开串口对象
fwrite(obj,255);%向串口发送握手信号0xff
TMP=fread(obj,3,’unit8’);%从串口读取3字节数据,后2个即是16bit温度数据
If TMP(1)= =255   %判断第一个字节是否是握手信号
for i = 1:3
Dat(i)=TMP(i+1);%剔除第一个握手信号字节
end
end
fclose(obj);%关闭串口设备对象
delete(obj);%删除内存中的串口设备对象
clear obj;   %清除workspace中的obj对象



  评论这张
 
阅读(186)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017