基于Matlab GUI的PC机与智能车的无线通信
基于Matlab查询方式的非实时串口通信虽然编程简单,对数据的调用处理也更为容易,但是只能接收一个过程的数据,这在对实时性要求较高的系统中往往不能满足设计者的需求。以下为部分通信程序代码。
6 基于Matlab中断方式实现实时串行通信
事件驱动方式的优点是程序响应及时,可靠性高。在Matlab环境下实现实时通信的中断方式,实际上就是采用事件驱动的方式实现的,类似于VB语言MSComm控件中OnComm事件的实现方法。当串口上监视到缓冲区有指定字节数目的数据可用(bytes-available event),串口接收到的数据长时间处于非激活状态(break-interrupt event),串行口引脚状态改变(pin-status event)或输出缓冲区为空(output empty eve nt)等事件发生时,Matlab会自动调用回调函数进行通信事件的处理。因此,事件驱动实质上是一种中断机制,而回调函数实质上相当于一个中断服务子程序。Matlab端实时串行通信的程序流程如图4所示。以下为两种不同的方式实现实时通信的中断机制程序。
6.1 将中断服务子程序写入GUI组件的部分M文件代码
主程序创建串口设备对象、设置串口设备属性及打开串口等初始化操作的代码与查询方式下的初始化代码相同:
6.2 通过调用修改后的instroallback.m文件实现中断
主程序:
修改instreallback(obj,evenlt)回调函数,instrcallback.m文件包含了Matlab提供的回调函数程序模板,设计者可以根据需要自行添加相应的服务程序代码。Matlab安装目录下有两个instrcallback.m文件,只需要修改MATLABtoolboxmatlabiofun@instrument目录下的instrcallback.m文件即可。另外,在修改instrcallback.m文件之前,最好对其做一个备份。在修改了instrcallback(obj,event)回调函数后,需要对其进行保存,重新启动Matlab配置该文件,才使修改后的函数生效。
图5为以下方式实现的智能车启动过程速度的实时显示,修改后的instrcallback.m文件主要程序代码如下:

数字通信相关文章:数字通信原理
评论