当前位置:首页 > 单片机 > 单片机
[导读]摘要:基于Matlab的串口通信机制,简要介绍了查询方式下的非实时通信,提出一种将事件中断写入GUI组件函数的方式,相对于改写instrcallback函数实现串口中断机制的实时通信方式,大大简化了中断方式实现实时通信的过

摘要:基于Matlab的串口通信机制,简要介绍了查询方式下的非实时通信,提出一种将事件中断写入GUI组件函数的方式,相对于改写instrcallback函数实现串口中断机制的实时通信方式,大大简化了中断方式实现实时通信的过程,并详述了三者的差异和实现过程。利用Matlab的GUI工具和内置的串口通信API,设计了一个可视化的串口通信界面,通过蓝牙串行接口,实现智能车系统采集数据的实时接收,并利用Matlab强大的科学计算功能,对数据进行实时处理,图形化量示数据处理结果。实验结果表明,该方法可行,具有一定的应用价值。
关键词:Matlab GUI;智能车;MC68HCS12G128单片机;回调函数instrcallback;实时通信

引言
    在以速度决定优劣的飞恩卡尔智能车比赛中,任何因素都可能影响小车的运行。为了满足对小车在赛道中各种状态精确分析的需求,上位机的效据采集与处理要求通信波特率高、信号传输稳定、不丢包、数据处理量大、数据处理及时等。在基于Matlab环境下的串口通信中,查询方式下的非实时串行通信技术对实时性要求很高的智能车通信有很大的局限性。而在目前普遍采用的中断机制下的通信虽然可以满足实时性的需要,却需要修改Matlab自带的instrcallback回调函数。程序调试过程中惨改了回调函数后,需要重新启动Matlab才能使得新的回调函数文件生效。由此可以看出,其操作复杂易出错,且instrcallback函数接收到保存在工作空间的数据不能被GUI组件的函数实时调用。故此方式在需要对多组数据进行分别作图分析时,往往生成多个零散图形窗口。为了满足智能车的实时通信需求,同时使基于Matlab GUI的通信界面更加简洁,本文提出了一种将事件中断函数写入GUI组件函数中的方式。
    Matlab是由美国Mathworks公司开发的面向理论分析研究及工程设计处理和绘图的一套具有强大功能的软件系统。Matlab运行稳定、可靠,使用方便,是广大科研人员进行科学研究的得力助手。从Matlab6.0版本开始,Mathworks公司在软件中增加了设备控制箱(instrument control toolbox),提供了对RS-232/RS-485通信标准的串口通信的正式支持。Matlab GUI(Graphic User Interface)是内置于Matlab的进行图形界面开发的模块。本文主要介绍在Mariab GUI环境下,上位机与智能车进行实时通信盼办法。该方法较之使用VC/VB高级语言编程,
大大缩减了开发时间,提高了开发效率。另外,较之传统的RS-232接口,使用蓝牙接口能够更大范围地全方位进行数据传输和采集。实验结果表明,经过两次握手处理后数据传输实时稳定,具有很强的实用性。

1 系统总体设计方案
   
系统采用飞恩卡尔MCA8HCS12G128单片机作为智能车的控制器,PC机为上位机。利用Matlab GUI构建起二者的实时通信、数据处理和绘图等平台。整个系统的原理框图如图1所示,介绍了基于Matlab的GUI和串口通信机制下建立上位机与智能车实时通信和作图的平台方法。


    智能车与PC机通过蓝牙相连,系统工作时,由Matlab调用设备控制工具箱中的serial类函数来设置串口属性,创建串口对象,从而实现Matlab对串口的控制和读写操作。在对智能车的调试过程中,可以通过Matlab向蓝牙发送特殊指令,启动智能车。在智能车系统运行后便可以将所采集位置和速度等效据通过蓝牙回送给PC机。
    由Matlab通过中断方式实时接收数据,并对数据进行分析和处理,实时绘出相应的图形。

2 Matlab GUI设计介绍
   
①运行Matlab后,点击主界面左上角的GUI图标即可运行Matlab GUI开发工具。
    ②点击Blank GUI(Default)选项并点击OK按钮,完成新建Blank GUI。
    ③在新建的Blank GUI界面的右方菜单中添加设计所需要的元素,完成串口通信及数据实时显示等功能的GUI界面设计。
    ④编写GUI组建相应的响应控制代码,运行后的通信仿真界面如图2所示。



3 单片机与PC机串行通信
3.1 设计思想
   
MCA8HCS12G128单片机的软件设计需要实现对程序的初始化、接收与发送串口信号、速度和位置数据的采集等功能。为了保证上位机采集数据的可靠性和稳定性,防止出现丢包事件,在通信过程中约定了双方的握手方法。在程序初始化以后,等待fwrite命令发送的握手信号0xFF。当单片机第一次接收到的信号为0xFF时,则握手成功,并开始运行电机和激光头等子程序。在实验过程中发现存在发送的第一组数据第一个字节丢失的现象,为了增强数据的可靠性,首先判断数据包的前两个字节是否为0xFF,是则剔除相应字节,分离出有效的数据,再在回送的速度、激光传感器的数据中嵌入两个字节的握手信号0xFF,Matlab接收到串口的数据后进行相应的处理。智能车控制器通信的总程序流程如图3所示。


3.2 系统蓝牙串口通信主要代码
   

4 基于Matlab GUI的PC机与智能车的通信
4.1 Matlab GUI基础上实现串口通信的软件设计
   
在Matlab环境下,读取串口数据有查询和中断两种方式。查询方式数据只能分批进行传送,实时性不高,且对系统资源的占用比较大。以中断方式实现的串口通信,通常的处理方式是对Matlab提供的instrcallback回调函数进行修改,采用事件驱动的方式,达到实时处理下位机传送数据的目的。但是采用Matlab的事件和回调函数机制编程要相对复杂一些,在对instreallback函数进行修改和备份等操作时容易出错且比较麻烦。另外,每次修改instreallbaek函数后都要重新启动Matlab,可能会导致数据丢失等一些不必要的麻烦。将事件驱动函数写入GUI组件的M文件中,可以减少绾程的复杂性,避免一些不必要的麻烦,实现串口之间的实时通信。
4.2 设备控制工具箱介绍
    Matlab设备控制工具箱主要是提供Matlab软件与各种智能仪器的直接通信功能。工具箱提供了以下功能:
    ①支持串行接口(RS-232/RS-422/RS-485)、GPIB接口(IEEE 488)等通信协议。
    ②支持IVI、VXI plug&play和Matlab设备驱动(instrument drivers),不需要学会写与设备相关的指令即能与仪器直接联通。
    ③传输的数据可以是文本或二进制的(数字的)。
    ④支持同步和异步(有阻塞或无阻塞)通信。
    ⑤支持基于事件的通信。
    ⑥新的TMTOOL图形用户接口不仅能够连接仪器、接收/发送数据,而且可以自动生成M代码文件,以加入编写的Matlab程序中。

5 基于Matlab GUI查询方式实现异步串行通信
   
基于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文件,只需要修改\MATLAB\toolbox\matlab\iofun\@instrument目录下的instrcallback.m文件即可。另外,在修改instrcallback.m文件之前,最好对其做一个备份。在修改了instrcallback(obj,event)回调函数后,需要对其进行保存,重新启动Matlab配置该文件,才使修改后的函数生效。


    图5为以下方式实现的智能车启动过程速度的实时显示,修改后的instrcallback.m文件主要程序代码如下:
   
    实验证明,基于Matlab事件驱动实现的智能车与上位机的实时串口通信可以很好地满足智能车调试过程中的需要,且将中断服务子程序写入GUI组件和修改instrcallback.m文件两种方式的通信都稳定可靠。

结语
   
在Matlab环境下两种实现智能车与PC机实时通信的中断机制都能实时稳定地进行数据传输,不过将中断服务子程序写入GUI组件的方式编程简单,数据处理方便,实现更为容易,开发效率相对得到了较大的提高。实践证明,采用这种方法是可行的,它不但能够应用于本文的智能车系统,也可广泛应用在其他具有串口通信能力的仪器设备中。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

特朗普集团近日取消了其新推出的T1智能手机“将在美国制造”的宣传标语,此举源于外界对这款手机能否以当前定价在美国本土生产的质疑。

关键字: 特朗普 苹果 AI

美国总统特朗普在公开场合表示,他已要求苹果公司CEO蒂姆·库克停止在印度建厂,矛头直指该公司生产多元化的计划。

关键字: 特朗普 苹果 AI

4月10日消息,据媒体报道,美国总统特朗普宣布,美国对部分贸易伙伴暂停90天执行新关税政策,同时对中国的关税提高到125%,该消息公布后苹果股价飙升了15%。这次反弹使苹果市值增加了4000多亿美元,目前苹果市值接近3万...

关键字: 特朗普 AI 人工智能 特斯拉

3月25日消息,据报道,当地时间3月20日,美国总统特朗普在社交媒体平台“真实社交”上发文写道:“那些被抓到破坏特斯拉的人,将有很大可能被判入狱长达20年,这包括资助(破坏特斯拉汽车)者,我们正在寻找你。”

关键字: 特朗普 AI 人工智能 特斯拉

1月22日消息,刚刚,新任美国总统特朗普放出重磅消息,将全力支持美国AI发展。

关键字: 特朗普 AI 人工智能

特朗普先生有两件事一定会载入史册,一个是筑墙,一个是挖坑。在美墨边境筑墙的口号确保边境安全,降低因非法移民引起的犯罪率过高问题;在中美科技产业之间挖坑的口号也是安全,美国企业不得使用对美国国家安全构成威胁的电信设备,总统...

关键字: 特朗普 孤立主义 科技产业

据路透社1月17日消息显示,知情人士透露,特朗普已通知英特尔、铠侠在内的几家华为供应商,将要撤销其对华为的出货的部分许可证,同时将拒绝其他数十个向华为供货的申请。据透露,共有4家公司的8份许可被撤销。另外,相关公司收到撤...

关键字: 华为 芯片 特朗普

曾在2018年时被美国总统特朗普称作“世界第八奇迹”的富士康集团在美国威斯康星州投资建设的LCD显示屏工厂项目,如今却因为富士康将项目大幅缩水并拒绝签订新的合同而陷入了僵局。这也导致富士康无法从当地政府那里获得约40亿美...

关键字: 特朗普 富士康

今年5月,因自己发布的推文被贴上“无确凿依据”标签而与推特发生激烈争执后,美国总统特朗普签署了一项行政令,下令要求重审《通信规范法》第230条。

关键字: 谷歌 facebook 特朗普

众所周知,寄往白宫的所有邮件在到达白宫之前都会在他地进行分类和筛选。9月19日,根据美国相关执法官员的通报,本周早些时候,执法人员截获了一个寄给特朗普总统的包裹,该包裹内包含蓖麻毒蛋白。

关键字: 美国 白宫 特朗普
关闭