资源描述:
《基于matlab_gui的串口通信编程实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、0引吕Matlab是MathWorks公司开发的一种科学计算软件。Matlab运彳亍稳定、可靠、使用方便,是广大科研人员进行科学研究的得力助手。Matlab不仅具有强大的科学计算功能,还具冇满足一般要求的数据采集以及界面设计开发功能。MetlabGUI(GraphicUserInterface)就是内置于Matlab的进行图形界面开发的模块。本文利用MatlabGUI设计通过串口进行数据发送和接收的界而,并利用内置于Matlab的串口通信API实现串口数据发送与接收功能。1MatlabGUI介绍启动Matlab后,运行guide命令即可以启动Matl
2、abGUI开发工具。如图1所示。图1MatlabGUI开发界面图2新建BlankGUI界面新建BlankGUI,如图2所示。在新建BlankGUI界面中,包含了一般的界面元素,如菜单、按钮、坐标轴、控件等。添加必要的串口通信参数设置按钮。运行后的界而如图3所示。图3串口通信界面2串口数据发送与接收功能实现2.1建立串口通信流程的基本步骤Matlab提供了对串口进行打开、关闭、以及串口参数设置等操作的一系列函数。利用这些函数可以选择串口号、设置串口通信参数(波特率、数据位、停止位、校验位等)、进行中断控制、流控制。从建立串口通信到结束串口通信的完整流程
3、包括以下几个步骤:(1)为应用程序创建串口对象。实现该功能的函数为:obj—seriaKfportr/PropertyName,,PropertyValue,•••)其中参数port为完整的串口名称,如cornloPropertyName为串口通信参数,如baudrate,startbits等。创建串口对象的过程中,也可以忽略PropertyName0其函数为:obj=seriaKport^)(2)连接打开串口。实现该功能的函数为:fopen(obj)obj即为使用创建串口对象函数的返回值。在连接打开串口后,可以对串口通信参数进行修改。(3)设宜或者
4、修改串口通信参数。在能够有效地进行串口通信前,必须设宜止确的串口通信参数。实现该功能的函数为:props=set(obj,rPropertyName7.PropertyValue,obj即为使用创建出口对象函数的返冋值;PropertyName为串口通信参数,女IIbaudrate,startbits等。(4)从串口读写数据。在前面三个步骤正常完成后,即可以从串口读数据或者向串I」写数据,也就是接收或者发送数据。实现读串口功能的函数有多个。其区别在于根据到达串口数据的类型选择介适的读函数。主要包括:fgetl,fgets,fread,fscanfo这
5、里主要介绍fread,fread函数实现从串口读入二进制数据。fwad的实现形式为:A=fread(obj,size)A为读入的数据,以数组的形式存储,存储数据形式为字节;obj即为使用创建串口对象函数的返回值;size指定一次读操作读入字节的个数。实现写串口的函数有两个,分别为fwrite和fprintfofwrite以二进制形式向串口写入数据,实现形式为:fwrite(obj,A)obj即为使用创建串口对彖函数的返回值;A为写入的数据,以数组形式存储。fwrile以文本形式向串口写入数据,即以ASCII码的形式向串口写数据,实现形式为:fprin
6、tf(obj,*cmd')obj即为使用创建串口对象函数的返回值;cmd为写入的文本数据,以数组形式存储。⑸关闭吊口以及释放出口对象占•用的存储空间。关闭出口函数为:fclosc(obj)。释放串口对象占用的内存空间,函数为:delete(obj)o释放串口对象在MatlabI作区屮占用的存储空问,函数为:clearobjo以上5步是建立串口通信过程到关闭串口,释放串丨I占用资源的基本步骤。基本步骤可以实现手动收发数据。其例程如下:s=serial(/COMlr);fopen(s);s.BytesAvailableFcnMode=rterminato
7、rrjs.BytesAvailableFcn=@instrcallback;fprintf(s/*IDN?J;out=fscanf(s);运行以上语句后,显示的结果如下:BytesAvailableeventoccurredat17:01:29fortheobject:Serial-COMl.串口数据接收完毕后,需要关闭串口,并释放串口对象占用的资源,使用的命令如下:fclose(s);delete(s);clears;2.2串口中断设置及中断处理函数要实现自动收发数据,还需要定义串口屮断处理函数以及触发串口屮断的方式。定义串口中断处理函数也就是定义
8、串口数据接收或者发送函数。定义触发串口中断的方式其1丨的是为了在串口检测到接收数据的时候,通知并丿rl动串口