《matlab串口编程.pdf》由会员分享,可在线阅读,更多相关《matlab串口编程.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、在嵌入式当中,串口是一种是用的比较多的通信和调试方式,串口主要还是用于通信,虽然是比较老的一种通信方式,但是现在依然保留并有着其活力,基本所有单 片机等嵌入式处理器都保留有串口模块。调试只是串口的一个被用来是用的附加功能,想对于昂贵的在线调试工具,它有着很多其他方面的优势,直观的显示程序运 行的状态和相关变量。由于其长时间的使用,相关技术和程序也比较成熟,很多工具都提供对串口通信和调试的支持,MATLAB,gdb 等,串口监视和调试助 手等也随处可以得到,相对于其嵌入式通信方式,它简单实用,适合初学者和速率要求不高的场合。之前用过蓝牙虚拟串口将串口无线化,单片机间串口通信,wifi 模块和 A
2、RM7 串口通信,单片机于 PC 机串口通信,这次的综合课程设计需要在 PC 上对串口 数据进行频谱的分析,于是就想使用 MATLAB 数学计算软件,应该相对简单点,果然,在提供相关数学运算函数的前提下,对各种设备的支持也很强大,在这里 说一下我我在这次试验中对 MATLAB 对串口操作的理解。前提还是阅读 MATLAB 自带的 help 文档,这是软件提供的最权威和全面的支持,但是很多人却 忽略。检索对自己有用的信息也是一种能力。在 MATLAB 中有三种方式来操作串口,但是最终原理都是一样的。1,simulink 工具箱仿真2,Instrument control toolbox3,使用
3、MATLAB 变成语言,编写自己的程序控制在 Instrument control toolbox 中,就像个串口助手,可以以图像化的方式设置各种参数,进行各种操作。在工具箱中,可以将你进行的操作实时的转换成 m文件,如果你不知道怎 么编写控制串口的 m 文件,可以进行相关操作,然后参考生成的 m 文件进行编程。simulink 工具箱相对而言是比较高级的功能仿真工具,一般是在隐藏硬件细节的前提下功能仿真,如果你不熟悉原理,使用起来会一头雾水,特别是出错 时,所以建议在熟悉了底层实现的前提下使用。(可能说的太主观,至少我是这样)没什么比编写自己的程序更加能了解自己控制的设备了,其上的两种方式都
4、是在这个方式的基础上实现的,最终控制原理都是一样的,都是通过 MATLAB 提供的一系列 API 函数对串口进行操作。1 和 2 我都尝试过,但是最后还是觉得之间编程比较清晰,当然这只是一个过程,不同的情况使用不同的工具才是正确的。以上纯属个人观点和理解,仅供参考,有什么好的想法还请不吝赐教,大家一起学习。下面是我对 MATLAB 环境下对串口操作的一些理解和操作。在 MATLAB 中,串口被抽象成一个结构体,所有的操作均同归相关函数对结构体操作完成,通过 serial 函数新建一个串口对象,该函数至少需要一个参 数,即串口号,其他的可选参数为设置该串口相关参数,可以在新建对象的时候指定也可以
5、在以后用 set 函数设置。相对而言,get 函数可以得到串口对象的相 关参数值或者状态。串口对象参数如下:CommunicationsCommunicationsPropertiesPropertiesBaudRateRate at which bits are transmittedDataBitsNumber of data bits to transmitCommunicationsCommunicationsPropertiesPropertiesParityType of parity checkingStopBitsNumber of bits used to indicate
6、the end of a byteTerminatorTerminator characterWrite PropertiesWrite PropertiesBytesToOutputNumber of bytes currently in the output bufferOutputBufferSize Size of the output buffer in bytesTimeoutWaiting time to complete a read or write operationTransferStatusIndicate if an asynchronous read or writ
7、e operation isin progressValuesSentTotal number of values written to the deviceRead PropertiesRead PropertiesBytesAvailableNumber of bytes available in the input bufferInputBufferSize Size of the input buffer in bytesReadAsyncModeSpecify whether an asynchronous read operation iscontinuous or manualT
8、imeoutWaiting time to complete a read or write operationTransferStatusIndicate if an asynchronous read or write operation isin progressValuesReceivedTotal number of values read from the deviceCallback PropertiesCallback PropertiesBreakInterruptFcnM-file callback function to execute when abreak-inter
9、rupt event occursBytesAvailableFcnM-file callback function to execute when aspecified number of bytes is available in theinput buffer,or a terminator is readBytesAvailableFcnCount Number of bytes that must be available in theinput buffer to generate a bytes-available eventBytesAvailableFcnModeSpecif
10、y if the bytes-available event isgenerated after a specified number of bytes isavailable in the input buffer,or after aterminator is readCallback PropertiesCallback PropertiesErrorFcnM-file callback function to execute when an errorevent occursOutputEmptyFcnM-file callback function to execute when t
11、heoutput buffer is emptyPinStatusFcnM-file callback function to execute when the CD,CTS,DSR,or RI pins change stateTimerFcnM-file callback function to execute when apredefined period of time passesTimerPeriodPeriod of time between timer eventsControl Pin PropertiesControl Pin PropertiesDataTerminalR
12、eadyState of the DTR pinFlowControlData flow control method to usePinStatusState of the CD,CTS,DSR,and RI pinsRequestToSendState of the RTS pinRecordingRecordingPropertiesPropertiesRecordDetailAmount of information saved to a record fileRecordModeSpecify whether data and event information are saved
13、toone record file or to multiple record filesRecordNameName of the record fileRecordStatusIndicate if data and event information are saved to arecord fileGeneral PurposeGeneral PurposePropertiesPropertiesByteOrderOrder in which the device stores bytesNameDescriptive name for the serial port objectPo
14、rtPlatform-specific serial port nameStatusIndicate if the serial port object is connectedto the deviceTagLabel to associate with a serial port objectTypeObject typeGeneral PurposeGeneral PurposePropertiesPropertiesUserDataData you want to associate with a serial portobject一般操作串口步骤为:(保护现场)-新建串口对象-设置相
15、关参数-读写操作-断开连接,清理现场-(恢复现场)新建串口对象:serial 函数,以提供各种参数新建串口对象设置参数:可以在 serial 函数中指定参数,也可以用 set 函数改变和设置特定参数。读写操作:和 C 语言中文件读写操作很想,以 object 对象文件描述符进行操作。主要操作函数为:fprintf,写函数,以字符方式写fwrite,写函数,以二进制方式写fscanf,读函数,以字符方式读,以 Terminator 为 结束符,带有超时返回功能fread,读函数,以而进制方式读,读指定字符数fgets,读函数,以字符方式读,包括 Terminatorfgetl,读函数,以字符方式
16、读,忽略 Terminator辅助操作。在串口中有四个变量:InputBufferSize,OutputBufferSize,ValuesSent,ValuesReceived,字面意思很好理解,在 MATLAB 中,输入输出都是有相应缓冲区的,防止数据丢失,也给数据流提供更灵活的控制。可是设置适当的缓冲区长度和检测接受或者 发送的字符个数来进行相关操作,在我的试验中,需要做 FFT,做 FFT 需要一定的点数,我是检测 ValuesReceived 的值,到指定的个数 时一次性读到程序中处理。以上函数具体细节参考 help 文档,注意字符个数和Terminator 字符!断开连接:fclose(s)关闭连接delete(s)删除对象clear s清除调试,当然一切事情都不会那么一帆风顺,难免出现状况,这是可以使用一些简单的操作进行调试检查,MATLAB 有自己的 M 文件调试方式,查看串口对象变量disp 等函数查看变量是否对,或者最简单的在 command 窗口键入对象名即可以输出对象所有参数,串口对象是否新建成功,是否重复冲突 Instrument controltoolbox 也可以使用。在实验中,使用虚拟串口软件虚拟两个串口内部相连,进行纯软件调试,下面是我 制 作 简 单 界 面 的 程 序,第 一 次 用MATLABGUI设 计。