- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于Matlab GUI的串口通信编程实现
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 串口中断设置及中断处理函数
要实现自动收发数据,还需要定义串口中断处理函数以及触发串口中断的方式。定义串口中断处理函数也就是定义串口数据接收或者发送函数。定义触发串口中断的方式其目的是为了在串口检测到接收数据的时候,通知并启动串口数据接收函数进行数据接收操作;在串口输出缓存为空的时候,通知启动串口数据发送函数。
作者:王战军 沈 明 来源:现代电子技术
上一篇:功率转换及管理的数字控制
下一篇:满足DC/DC转换器以供FPGA电源设计需求


