基于Matlab GUI的串口通信编程实现

发布者:平稳心绪最新更新时间:2010-07-09 来源: 现代电子技术 关键字:串口通信 手机看文章 扫描二维码
随时随地手机看文章

      0 引言

      Matlab是MathWorks公司开发的一种科学计算软件。Matlab运行稳定、可靠、使用方便,是广大科研人员进行科学研究的得力助手。Matlab不仅具有强大的科学计算功能,还具有满足一般要求的数据采集以及界面设计开发功能。Matlab GUI(Graphic User Interface)就是内置于Matlab的进行图形界面开发的模块。

      本文利用Matlab GUI设计通过串口进行数据发送和接收的界面,并利用内置于Matlab的串口通信API实现串口数据发送与接收功能。

      1 Matlab GUl介绍

      启动Matlab后,运行guide命令即可以启动Matlab GUI开发工具。如图1所示。

      新建Blank GUI,如图2所示。

      在新建Blank GUI界面中,包含了一般的界面元素,如菜单、按钮、坐标轴、控件等。添加必要的串口通信参数设置按钮。

      运行后的界面如图3所示。

[page]

 

      2 串口数据发送与接收功能实现

      2.1 建立串口通信流程的基本步骤

      Matlab提供了对串口进行打开、关闭、以及串口参数设置等操作的一系列函数。利用这些函数可以选择串口号、设置串口通信参数(波特率、数据位、停止位、校验位等)、进行中断控制、流控制。从建立串口通信到结束串口通信的完整流程包括以下几个步骤:

      (1)为应用程序创建串口对象。实现该功能的函数为:

      其中参数port为完整的串口名称,如cornl。PropertyName为串口通信参数,如baudrate,startbits等。创建串口对象的过程中,也可以忽略PropertyName。其函数为:

      (2)连接打开串口。实现该功能的函数为:

      obj即为使用创建串口对象函数的返回值。在连接打开串口后,可以对串口通信参数进行修改。

      (3)设置或者修改串口通信参数。在能够有效地进行串口通信前,必须设置正确的串口通信参数。实现该功能的函数为:

      obj即为使用创建串口对象函数的返回值;PropertyName为串口通信参数,如baudrate,startbits等。

      (4)从串口读写数据。在前面三个步骤正常完成后,即可以从串口读数据或者向串口写数据,也就是接收或者发送数据。实现读串口功能的函数有多个。其区别在于根据到达串口数据的类型选择合适的读函数。主要包括:fgetl,fgets,fread,fscanf。这里主要介绍fread,fread函数实现从串口读入二进制数据。fread的实现形式为:

      A=fread(obj,size)

      A为读入的数据,以数组的形式存储,存储数据形式为字节;obj即为使用创建串口对象函数的返回值;size指定一次读操作读入字节的个数。实现写串口的函数有两个,分别为fwrite和fprintf。fwrite以二进制形式向串口写入数据,实现形式为:

      fwrite(obj,A)

      obj即为使用创建串口对象函数的返回值;A为写入的数据,以数组形式存储。fwrite以文本形式向串口写入数据,即以ASCII码的形式向串口写数据,实现形式为:

      fprintf(obj,\'cmd\')

      obj即为使用创建串口对象函数的返回值;cmd为写入的文本数据,以数组形式存储。

      (5)关闭串口以及释放串口对象占用的存储空间。关闭串口函数为:fclose(obj)。释放串口对象占用的内存空间,函数为:delete(obj)。释放串口对象在Matlab工作区中占用的存储空间,函数为:clear obj。

      以上5步是建立串口通信过程到关闭串口,释放串口占用资源的基本步骤。基本步骤可以实现手动收发数据。其例程如下:

      运行以上语句后,显示的结果如下:

      串口数据接收完毕后,需要关闭串口,并释放串口对象占用的资源,使用的命令如下:

      2.2 串口中断设置及中断处理函数

      要实现自动收发数据,还需要定义串口中断处理函数以及触发串口中断的方式。定义串口中断处理函数也就是定义串口数据接收或者发送函数。定义触发串口中断的方式其目的是为了在串口检测到接收数据的时候,通知并启动串口数据接收函数进行数据接收操作;在串口输出缓存为空的时候,通知启动串口数据发送函数。[page]

      (1)触发串口中断的方式。在Matlab串口通信编程中,Matlab通过检测到串口通信事件,从而触发串口中断。涉及到串口读写的事件包括:Bytes available,Output empty。其中Bytes available事件有两种:一种是接收到的字符数达到人工设定的数目时,则系统产生该事件;另一种是当接收到指定字符时,系统产生该事件。Output erupty事件是在系统检测到输出缓存区为空时,产生该事件。

      Bytes available事件需要事先设置。可以使用函数:set(obj,\'By tesAvailableFcnMode\',\'byte\');set(obj,\'BytesAvailableFcn-Count\',240);以上两个函数设置当串口检测到输入缓存中到达了240个字符的数据时,则触发串口中断。另外,也可以设置为当系统检测到某个字符达到串口,则触发串口中断。其设置函数为:set(obj,\'BytesAvailableFcnMode\',\'terminator\');set(obj,\'terminator\',  \'H\')。以上两个函数设置当串口检测到字符H时,则触发串口中断。

      输出缓存为空事件的产生。该事件由系统自动检测产生,不需要用户特别设置。该事件一般在输出缓存中的最后一个字符发送完毕后产生。用户可以定义该事件引起的串口中断处理函数。

      (2)串口中断处理函数。串口中断处理函数可以根据用户需要自行定义。如串口读中断处理函数可以这样定义:obj.BytesAvailableF-cn=@reeeiveData。receiveData即为串口读中断处理函数。在读中断处理函数中可以进行串口读操作。即将输入缓存区中的数据读到用户自定义的存储变量中,以备后续的数据处理与分析。类似可以定义输出缓存为空时触发的串口中断处理函数:obj.OutputEmptyFcn=@write-Data

      本文开发的串口通信程序用于接收采集IMU(Inertial Measurement Unit)输出的加速度计和陀螺的测量数据。通过定义串口读中断事件和串口中断处理函数,实现了数据的自动采集,并以Matlab图形方式实时显示数据。

      3 串口通信程序的编译发布

      3.1 编译程序

      为了对代码进行保密,以及方便用户发布可以在不同平台运行的可执行程序,Matlab提供了Matlab程序编译与发布功能。在进行Matlab程序编译之前,需要设置编译工具。在Matlab命令窗口中,输入运行mbuild-setup,进行编译工具设置。如图4所示。

      mbuild-setup命令运行后,Matlab会检测已经安装在本机上的编译器,用户可以自行选择任意一个编译器,选择完毕后,运行编译命令,Matlab将使用用户选定的编译器对程序进行编译。

      设置完毕编译工具后,即可以在命令窗口中运行编译命令,将Matlab程序编译成可执行程序。命令格式为:

      mcc[-options]mifilel[mfile2…mfileN];

      options为编译参数;mfilel为待编译的Matlab文件,如果包含多个Matlab文件,可以直接列在mfilel后面。

      如将一个文件名为myfun.m的Matlab文件编译成一个独立可执行程序,可以使用mcc命令:

      mcc-m myfun:

      mcc命令可以用使用多个编译参数,相应参数的含义可以参见Matlab帮助文档。

      3.2 发布程序

      Matlab文件编译完毕后,生成的可执行程序还需要.Matlab环境的支持,要发布到没有安装Matlab的机器上运行,还需要进行最后一项工作,即打包Matlab组件运行环境(Matlab Component Runtime,MCR)。将MCR与可执行程序一起打包,拷贝到其他没有安装Matlab的机器上,在该机器上安装MCR,安装完毕即可以直接在该机器上运行编译的Matlab可执行程序。MCR安装文件位于:

      Matlab Root\toolbox\compiler\deploy\win32

      在2008版Matlab中,已经内置了Matlab编译发布工具箱,在Matlab命令窗口中运行deploytool命令,即可以调出该工具窗口,通过该工具可以方便、快捷地编译发布Matlab程序。

      4 结语

      Matlab具有强大的科学计算功能和图形显示功能,选用Matlab作为数据处理与分析工具是合适的,但其界面开发和数据采集功能相对较弱,不如VisualC++或者LabView强大。不过,对于一般的界面开发,和普通功能的串口通信开发,Matlab是足以胜任的,同时也可以直接利用其强大的数据分析与处理功能。本文基于Matlab GUI的串口通信功能的编程实现表明利用Matlab GUI可以进行包含一般界面元素的界面开发,在此基础上,加入串口通信功能,实现数据的实时采集与分析处理,并进行图形化显示。


 

 

关键字:串口通信 引用地址:基于Matlab GUI的串口通信编程实现

上一篇:基于Virtools 和串口通信的界面交互性的设计与实现
下一篇:利用以太网硬件协仿真接口实现便捷和高带宽的仿真

推荐阅读最新更新时间:2024-05-07 16:06

STM32的串口通信
在基础实验成功的基础上,对串口的调试方法进行实践。硬件代码顺利完成之后,对日后调试需要用到的printf重定义进行调试,固定在自己的库函数中。 b) 初始化函数定义: void USART_Configuration(void); //定义串口初始化函数 c) 初始化函数调用: void UART_Configuration(void); //串口初始化函数调用 初始化代码: void USART_Configuration(void) //串口初始化函数 { //串口参数初始化 USART_InitTypeDef USART_InitStructure; //串口设置恢复默认
[单片机]
STM32F103学习笔记——串口通信
在STM32串口通信程序中使用printf发送数据,非常的方便。可在刚开始使用的时候总是遇到问题,常见的是硬件访真时无法进入main主函数,其实只要简单的配置一下就可以了。 下面就说一下使用printf需要做哪些配置。 有两种配置方法: 一、对工程属性进行配置,详细步骤如下 1、首先要在你的main 文件中 包含“stdio.h” (标准输入输出头文件)。 2、在main文件中重定义函数。如下: int fputc(int ch, FILE *f) // 发送数据 { USART_SendData(USART1, (unsigned char) ch);// USART1 可以换成 USA
[单片机]
51单片机串口通信实验电路详解
  51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。   很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。   单片机的串口通信看起来是很复杂的,主要是因为他用到了更多的寄存器,与前面的知识相比他更具综合能力,写起来考虑的问题自然也变多了。而前面学习过的定时器
[单片机]
51单片机<font color='red'>串口通信</font>实验电路详解
基于VB串口通信的电动天窗耐久性测试系统
1 概述 汽车天窗是为满足消费者乘车健康和舒适度的要求而设计的,因此人们对天窗性能的要求不仅仅停留在美观、豪华上,还必须满足安全、可靠、运行自如等全方位的要求。所以,在汽车天窗装车前要首先对其进行耐久性和安全性测试,以确保其装车后符合技术和用户的要求。而现有汽车天窗存在行程不到位,天窗打不开;行程不到位,天窗关不严,对汽车防盗防雨构成威胁;控制开关失灵,出现夹人现象等隐患和问题。 目前,国内天窗测试大都采用单机式的下位机系统。该类系统虽能进行常规测试,但不能记录或反馈测试信息。我们设计的汽车天窗测试系统分上、下位机,下位机具有控制天窗的执行机构,不但可以控制天窗的往返等动作,完成测试项目,而且还具备自动辨别故障功能,能自动记录
[测试测量]
基于VB<font color='red'>串口通信</font>的电动天窗耐久性测试系统
STM32学习总结之------串口通信USART
学习内容: 1、利用串口可以帮助我们调试程序,本节介绍的为串口最基本、最常用的方法,全双工、异步通讯方式。 2、要配置串口通讯,至少要设置以下几个参数:字长(一次传送的数据长度)、波特率(每秒传输的数据位数)、奇偶校验位、还有停止位。 在初始化串口的时候,必然有一个串口初始化结构体,这个结构体的几个成员就是有来存储这些控制参数的。 3、串口线主要分两种,直通线(平行线)和交叉线。 假如PC与板子之间要实现全双工串口通讯,必然是PC的Tx针脚要连接到板子的Rx针脚,而PC的Rx针脚则要连接至板子的Tx针脚了。由于板子和pc的串口接法是相同的,就要使用交叉线来连接了。 直通线接法:开发板Tx连接至DB9的第2针脚,而Rx连
[单片机]
STM32学习总结之------<font color='red'>串口通信</font>USART
基于51单片机的串口通信(PC发字符)
串口通信 选用芯片:AT89S52 函数功能:见如下代码。 /******************************************************************* 函数功能:PC机发送数据给单片机,每次发送3个字节(每字节为8位)的数据, 每个字节的内容为0~99无符号整数中的一个;单片机接收PC机串口发送过来的 这3个字节数据,并将它们依次以十进制方式显示在6位数码管中(每两个数码管 显示一个字节数据,例如发送数据为11,9,70,则数码管上显示11 09 70); 显示采用共阳极数码管,采用动态扫描显示方式。 作者:Crazy Wind 日期:2020.10.22 version:1
[单片机]
STM32串口通信的重要性
刚开始学单片机的你,是不是会因用程序把LED点亮而感到高兴,会因用程序把数码管点亮而感到高兴。这是好事,这也是想继续学习下去的动力。 但是数据相关的实验是学习单片机和STM32的一道坎,此时就需要用好本文要说的串口这个调试工具。 串口通信介绍 关于串口通信的介绍,也可以点击阅读之前发的一篇文章。 STM32串口通信基本原理 串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。..。..这种太过理论了,看似懂了,但又不懂。还是用我笔者自己的话来说吧。 串口通信就是可以把程序在单片机或者STM32芯片中运行的结果发送到电脑的一种通信方式。 如何使用串口通讯,你需要知道的几个重要的知识点
[单片机]
TQ210——S5PV210串口通信
1、串行与并行通信 串行通道中,有效信息被编码后串行的从单根传输线上传送出去。譬如发送ASCII字符’a’,我们可以将’a’对应的ASCII码97(0x61)分作8个bit在传输线上顺序依次传输。 与串行传输相对应的是并行传输,并行传输一般有多根并列的传输线可以同时传输多个bit数据。譬如8线的并行传输,可以同时传输8个比特。因此在线速相同的情况下并行传输效率更高,但同时布线成本更高。 串行硬件接口简单,只需要 3 根线:一是底线,二是发送,三是接收。 UART 使用标准的 TTL/CMOS 逻辑电平(0~5V)来表示数据,用 1 表示高 电平,用 0 表示低电平,为了增强数据的抗干扰能力、提高传输距离,通常将 TTL
[单片机]
TQ210——S5PV210<font color='red'>串口通信</font>
小广播
最新网络通信文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved