串口和 matlab链接.docx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
串口和 matlab链接

matlab 串口通信?比如我要通信串口的波特率为4800:?s=serial(com1);?fopen(s)?s.baudrate=4800;?fwrite(s,[48 59]); %向com1口发送两个数据48和59?fread(s,4); %从串行口读入四个数据?记得通信的波特率要对才能正确收发,不过一般来说,允许5%的误差。??基于MATLAB 串口通信的数据采集系统的设计王明伟 李茜 汤伟(陕西科技大学电气与电子工程学院,陕西咸阳 712081)文章中选用的图片?利用:INSTRFIND? 可以看串口情况??(1)基于Matlab查询方式的异步串行通信编程 /news/listbylabel/label/MatlabMatlab查询方式的串行通信编程虽然简单,但这种方法在实际应用中实用价值不高,下面只作简单介绍。通信源程序如下: clc;%初始化串口设备对象,设置串口属性为:PC机com2口,输入缓冲区为1024,读写最大完成时间为0.6s,波特率为115 200b/s,1位停止位,遇到换行符中止,硬件流控制g=serial(com2);g.InputBufferSize=4096;g.timeout=0.6;g.BaudRate=115200;g.Parity=none;g.StopBits=1;g.Terminator=LF;g.FlowControl=hardware;fopen(g);%打开串口设备对象sfwrite(g,255);%以二进制的方式发送握手信号0xFF,缺省为异步通信方式out=fread(g,33,uint8)%接收单片机发送的33个数据(8位),并存入out数组中%释放串口设备对象fclose(g);delete(g);clear g;(2)基于Matlab中断方式的实时串行通信编程 在/news/listbylabel/label/MatlabMatlab环境下以中断的方式进行串行通信,实际上是采用事件驱动的方法实现的。Matlab提供了instrcallback(obj,event)/news/listbylabel/label/%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0回调函数,用户根据需要可以自行设置具体的串行通信事件。Matlab常用的串行口通信中断事件有:缓冲区有指定字节数目的数据可用事件(bytes-available event)、串口接收到的数据长时间处于非激活状态事件(break-interrupt event)、串行口引脚状态改变事件(pin-status event)、输出缓冲区为空事件(output empty event)等。当串口上有监视的事件发生时,Matlab会自动调用回调函数进行通信事件的处理。因此,/news/listbylabel/label/%E4%BA%8B%E4%BB%B6%E9%A9%B1%E5%8A%A8事件驱动实质上是一种中断机制,而/news/listbylabel/label/%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0回调函数实质上相当于一个中断服务子程序。Matlab端实时串行通信的程序流程如图4所示。以下是具体的编程步骤。 ①建立一个串行通信主程序:serial.m文件,在主程序中进行串口设备初始化操作,并指定回调函数中串行通信的事件。 程序主要源代码如下(创建串口设备对象、设备串口设备属性及打开串口等初始化操作的代码与前述的查询方式下的初始化代码相同): %设置回调函数触发事件—当串口缓冲区中有33字节的数据时,触发中断事件,此后主程序自动调用instrcallback(obj,event)/news/listbylabel/label/%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0回调函数 g.BytesAvaibleFcnMode=byte;%中断触发事件为‘bytes-available Event’ g.BytesAvailableFcnCount=33;%接收缓冲区每收到33个字节时,触发回调函数 mailto:g.BytesAvailableFcn=@instrcallback;%25g.BytesAvailableFcn=@instrcallback;%得到回调函数句柄 fopen(g);%连接串口设备对象 fwrite(g,255);%写串口,发送握手信号0xFF(等价于十进制下的数值255) ②修改instrcallback(obj,event)/news/listbylabel/label/%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0回调函数,对所发生的/news/listbylabel/labe

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档