技术文章和通讯

在MATLAB外部硬件配置和控制

特伦特Jarvi MathWorks


许多MATLAB用户分析数据,开发和验证算法,或创建软件应用程序把MATLAB环境中导入数据从外部硬件。这个额外的步骤创建效率低下,迫使用户手动传输数据从一个环境到另一个和学习和维护多个软件工具。

使用Garmin手持全球定位系统(GPS)接收机与rs - 232串行接口作为一个例子,本文将演示如何使用MATLAB和仪器控制工具箱使用不同的外部设备不离开MATLAB环境。它解释了如何与串行通信设备,在MATLAB与设备交互,并自动生成一个MATLAB脚本,可以共享、重用,或纳入一个MATLAB应用程序。

本文中使用MATLAB脚本可用下载

Garmin GPS接收机

rs - 232串行设备,例如GPS接收器,和仪器,如示波器,信号发生器,可以配置在MATLAB和控制仪器控制工具箱(图1)。我们的示例使用一个家用Garmin ETrex 12-channel GPS设备,通常使用而徒步旅行和划船。指定的例子使用电力和数据通信国家海洋电子协会(n mea) 183通信,它应该适用于任何GPS设备串行通信的能力。您可以使用其他协议,包括Garmin的专有协议,如果你有访问规范。

ex_hw_fig1.jpg
图1所示。GPS设备界面的MATLAB。

定位和连接硬件

找出串行通信设备和仪器,我们可以使用MATLAB命令行功能,例如instrhwinfo,instrfind,串行。另外,我们可以使用TMTool,仪器控制工具箱提供了一个图形用户界面,允许您定位、配置和控制串行设备和仪器,无需编写MATLAB脚本(图2)。首先,我们将探索可用硬件资产使用分层树。

ex_hw_fig2_w.jpg
图2。启动TMTool MATLAB。点击图片查看放大图。

与设备获取数据通信通常需要建立一个连接到它的通信接口。TMTool我们可以配置、控制和获取数据从设备通过完善的接口,包括串口、GPIB, TCP / IP和UDP(图3)。我们还可以使用TMTool与仪器使用签证,LXI,或新和VXI即插即用驱动程序。

ex_hw_fig3_w.jpg
图3。TMTool接口。点击图片查看放大图。

在MATLAB环境下配置一个串行设备

在图4中,串行节点已经扩展显示可用的串口通信。GPS是配置为广播n mea格式数据,消费级GPS接收器的共同选择。

GPS接收机连接到COM1后,我们选择配置选项卡为COM1串行端口匹配参数。n mea将这些参数定义为波特率每秒4800位,8位数据位,1停止位和奇偶校验。

ex_hw_fig4_w.jpg
图4。配置串口参数。点击图片查看放大图。

配置串口参数后,我们通过串口打开连接。连接的连接状态的变化,表明通过沟通与GPS通信选项卡现在是可能的。n mea标准指定数据必须传输作为新的line-terminated ASCII字符字符串。使用下拉菜单,我们设置了“接收数据”参数符合这个规范。

ex_hw_fig5_w.jpg
图5。收购TMTool串行数据。点击图片查看放大图。

我们现在可以发送数据到硬件和读取响应。在我们的示例中,我们需要做的是读取数据广播从GPS。我们可以确认我们正常沟通,感兴趣的数据可以通过点击读取按钮几次观察,正确格式化的字符串被收购的顺序日志。尝试几次后,感兴趣的GPS坐标出现在结果,连同其他几个n mea数据类型。最后,我们关闭连接到GPS设备捕捉断开的MATLAB脚本会话日志供以后参考。

重用的会话

一旦我们已经配置了端口,读取字符串,并获得我们感兴趣的数据,我们可以重复这个系列的任务在未来通过MATLAB文件称为导出生成的脚本get_gps_location.m。我们可以执行MATLAB脚本自动生成的,当我们与TMTool(图6)。

ex_hw_fig6_w.jpg
图6。由TMTool MATLAB脚本自动生成的。点击图片查看放大图。

处理GPS数据

到目前为止,我们已经配置了硬件和获得的数据,但我们获得了一些数据,如路标点和时间信息,不是特定于GPS定位。TMTool,我们可以自动过滤掉不需要的数据,就像我们在硬件配置和自动化数据采集通过添加MATLAB工具MATLAB脚本驱动程序。TMTool自动更新MATLAB脚本中生成会话日志选项卡。一旦我们有出口更新脚本MATLAB_GPS_example.m,我们可以插入MATLAB程序来过滤数据流。

%创建一个串口对象。其中obj1 = instrfind (“类型”,“串行”,“端口”,“COM4为”,“标签”,);%如果它创建串口对象不存在%,否则被发现使用对象。如果isempty(其中obj1)其中obj1 =系列(“COM4为”);其他文件关闭(其中obj1);其中obj1 =其中obj1 (1);结束%设置波特率为4800。obj。波特率= 4800;%连接到仪器对象,其中obj1。fopen(其中obj1);%我们只想字符串$ GPGLL…数据= ";虽然isempty (strmatch (GPGLL美元,数据))data = fscanf(其中obj1);结束%解析字符串获取坐标(纬度、数据)= strtok(数据',');(纬度、数据)= strtok(数据',');[nsCardinal、数据]= strtok(数据',');(长、数据)= strtok(数据',');[ewCardinal、数据]= strtok(数据',');lat = str2double (lat);长= str2double(长);%显示结果disp ({nsCardinal lat,长,ewCardinal});%免费的串行端口文件关闭(其中obj1);

获取和处理GPS数据,简单地执行MATLAB_GPS_example.m文件在命令行上。

创建一个通用驱动程序

虽然到目前为止讨论的MATLAB工作流将是足够的对于某些应用程序,其他人可能受益于将MATLAB脚本合并到一个可重用的司机。我们可以把MATLAB脚本集成到一个可重用的司机通过使用MIDEdit,一个驱动程序开发工具在仪器控制工具箱(图7)。MIDEdit让你低级命令合并到更高级别的命令,更容易访问。从命令行启动MIDEdit之后,我们创建一个新的通用的仪器驱动程序通过文件- >新上下文菜单。

ex_hw_fig7_w.jpg
图7。使用MIDEdit与函数名getLocation创建一个司机。点击图片查看放大图。

证明使用一个独立的、可重用的司机在MATLAB中,我们将添加两块功能司机:配置GPS设备和GPS定位。与MIDEdit我们也可以创建更高级的司机由数百行代码。

配置GPS设备,我们浏览TMTool MATLAB脚本自动生成的会话日志。这个脚本设置波特率,然后打开端口。我们现在可以将这些信息复制到一个司机。在MIDEdit,我们选择连接从初始化和清理节点选项卡并设置功能风格m。我们从TMTool然后粘贴脚本到函数中创建驱动程序编辑器。指出串行接口可能获得的变量obj传递给这个函数,MATLAB脚本是使用串口接口调整。

获取GPS定位,我们在MIDEdit选择函数节点,添加一个新函数getLocation ()。这个函数获取纬度、经度和红衣主教。在MATLAB代码编辑器窗格中,我们粘贴在MATLAB脚本读取n mea线。在我们的第一个例子,我们修改这个函数返回一个数组代表了GPS定位。我们添加逻辑指示getLocation ()只找到n mea的GPS坐标流和返回的位置。可以添加更多的功能为每个类型的n mea流中发现的信息。最后,我们将司机保存到工作空间nmeareceiver.mdd

使用一个通用的司机

司机现在已经准备好被使用GPS设备。我们使用TMTool扩大仪器驱动程序通过右键单击节点并创建一个新接口对象接口对象节点根据仪器对象节点。我们选择一个串口接口对象并设置端口的串口GPS连接。可以配置接口对象,开了,阅读使用前一节中描述的过程,但这一次我们将使用仪器驱动程序来执行我们的采集和分析的任务。

我们选择仪器对象节点和仪器驱动程序的输入信息nmeareceiver.mdd通过右击并选择新设备对象。然后我们将GPS连接到串口接口所代表的对象。可以改变界面如果设备和驱动程序支持多个接口。金宝app当完成时,nmeareceiver实例将出现在设备对象节点。

我们现在可以连接到GPS使用connect按钮。功能选项卡下,我们可以执行getLocation ()功能,导致得到的当前位置。我们可以出口到工作区进行进一步分析的结果。

MATLAB脚本自动生成的,当你与司机在TMTool交互。当使用GPS设备不使用一个司机,这个生成的脚本可以重用你的工作后与设备进行通信

%创建一个连续的对象。interfaceObj =系列(“COM4为”);%创建设备对象。deviceObj = icdevice (“nmeareceiver.mdd”,interfaceObj);%连接硬件设备对象。连接(deviceObj);%调用getLocation函数。调用(deviceObj“getLocation”);%……%断开从硬件设备对象。断开(deviceObj);

我们可以通过添加功能,提高司机的可重用性等所使用的基准,日期和时间,或锚点。司机可以与用户共享不需要详细了解如何与他们的设备通信。

总结

我们使用GPS设备来演示如何配置和获取数据从外部硬件不离开MATLAB环境。我们使用MATLAB和仪器控制工具箱与这个硬件不需要编写MATLAB脚本,演示了如何使用MATLAB脚本自动生成的重用我们的工作与硬件、通信以及如何通过驱动程序功能合并到MATLAB函数调用。使用MATLAB提高工作效率通过消除需要手动传输数据从一个环境或学习和维护多个软件工具。

2007年出版的

查看相关文章的能力