




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
这是我很久之前写串口通信程序时编的,网上这写资料很少,我是看着MATLAB的帮助文档自己一点点写的,虽然最后放弃了matlab上位机程序的方案,但是还是整理了一下之前的一些收获,写下以下的说明。编译环境:MATLAB2009a1打开GUIDE工具,点击红圈中的GUIDE图标。CurrentDirectory.E;FileEditTextGoCellTnoliCurrentDirectory.E;FileEditTextGoCellTnoliEiebutesDesktopffindovHelp^%发年按钮回调ShortcutsFHowtoAddNWhwt'zNaw148149iiE-func-tionpbSendDataCallback(hObjactglobalo_S$rialPort;:%hObjeq-thMdletopb_SendD^ta(/2直接利用默认设置点0K即可)GUIDEQuietStartCreateKewGUIGlUIlEtinplates.ElankGUI*GidwithUicoctroi■'GUIwithAjk5andflemiModalQuestionDialog3在控件篮拖拽控件到如下图的形式回图[IH]凶回回旧F目
西匠]回回13回①昏蜀阵令版寺站闻哥哥漫席沔6PropertyInspecroi-y口®—s?一Igl一4”Al■ds.MIe-odi.*»L曾r*4OHsX5fc-♦-■s.r匚苛Hl告言土M«91*1言-.«§#□---IIIXEHitM-bitEavFr-一!HJ*nnLx»r-.bckHu”MrMi-tL+Fnwh.:ILM-HL-l-n1.1dfHiHhl顿EH#+51£・也§varlrjn,S-Ql小T婷wTglEWTtrinnuecwmm富#r¥nLMTUUEEIUgr-.ttx^cfLT*try\L->>>L>、£>.0tlIrmL,&OH公旨!LAirIop41,0■la、a'o%=$BHml—12luffluTmEI〕dp□s功二可甘串围口PR【OHOnukp岬invi—l@【pol-l>♦■占-iv*KrJt£r.rLvrn>1tl>%tL・一般仅设置Tag选项和String选项。其中String选项在按钮控件中就是GUI显示时的字符。Tag属性较为重要,在GUI编程时控件的索引主要利用Tag选项的属性并且在GUI生成回调函数时候也是由Tag属性的值命名的。这里将“打开串口”按钮控件的String设置为“打开串口”,tag设置为pb_。penSerialPort。具体控件的设置和关于GUI的编程还是看下帮助(截图部分)或找本这方面的书看一下。Eixvir-oiMTien-t甲由:^ATULB▲f妙kfMX**…虬Eixvir-oiMTien-t甲由:^ATULB▲f妙kfMX**…虬W/皿这里对我即将用的功能简述一下,MALTAB的GUI主要由两个文件,当设置好GUIDE时点击保存,这时将在当前路径自动产生两个名字相同的文件,但扩展标识符不同,一个为.fig文件,一个为.m文件,.fig主要是GUI图形文件,和GUIDE设计的图像相同,.m文件为程序文件,所有事件响应和计算功能都在这里实现。MATLAB的按钮以及各种控件事件响应是依靠一种叫做回调函数(CallbackFunction)来实现的(我理解为和VisualC++中的消息映射,C#中的异步委托事件响应一种原理),自动生成的M文件中已经自动做好回调函数的名称和参数了,我们需要做的就是在其中添加你要进行的处理。
例如:我们要在鼠标单击按钮“打开串口”时进行一系列的串口初始化动作,这时右键单击“打开串口按钮”如图CutCtrLHCopyCutCtrLHCopyCtrl+CPasteCtrl+VClearDuplicateCtrli-]]BringtoFrontctri+rSemitoBackCtrl+SObjectTlrowserM_filaIdjtorJ籍则MALAB会自动转向相应的M文件的回调函数的位置。如图888990919293888990919293949595膈—Executesonbuttenpre&sin;:-bOp-?nSerialFort,funciionpi?O^enSerialPortCaHback(hObject,JaW0W*WAJUWJWJL«.M.U_«.WA"J-ajJ-'.'."J.E.UAMJ.W^JUULUUUVW.hObjectev^ntdatahandleshandletcpb_3pr]iS6ric;lPDrt;&■?£reserved-tostructurevfit.globaiQ_SerLaLPort,%这里,因为该按钮的Tag为"pb_OpenSerialPort”,则GUIDE自动生成的回调函数名即为pb_OpenSerialPort_Callback,函数有三个参数,hObject是当前控件对象,即打开串口按钮对象(面向对象技术中的概念),索引或设置当前对象(打开串口按钮对象)时只需要引用hObject就可以了。例如:改变当前空间的可见性,只需调用set(hObject,'Visable','off‘);打开串口对象在单击该按钮时即会隐藏。eventdata我暂时没有用到,所以暂且不管他handles我理解是整个GUI界面的索引句柄,所有GUI界面上的控件都可以通过他来索引,几乎有全局作用域,例如在打开串口按钮的回调中要将关闭串口按钮显示出来,可以这样调用set(handles.pb_CloseSerialPort,'Visable,,'on,);就可以了!这里handles还有一个作用就是在不同控件间进行参数传递,只要对handle的成员变量进行赋值就可以了。当然后面要调用一下guidata(hObject,handles);将变量保存。例如打开串口按钮里面有个数据10需要关闭串口按钮调用可以这样写。%打开串口按钮回调函数中handles.double_vir=10;guidata(hObject,handles);%关闭串口按钮回调函数中a=handles.double_vir;5进行串口设置,参看如下图中的MATLAB帮助甲申令=fK-omMJLTULBReWotesM4.■且3.KtL«BD-MJLTZLAB.王侦-日/iim号C姓ceWEH—Fill.喧w+□■"■■电H=n■虹PWK--Lx-3HJ«,"卫SI—申■jk..WfC«JLl_ie<£NATLASSo>£■».«:EiromC-a_nd.Fu直-t_iruxF*mtis-+Unc.iin.S-um.Jww(Z3.■答冬■■■iicMA-TT-JL*nS。蛆里VT质ksQiCWMS-upf<±<»±-IVIATl^AV£>:«-£twu«4COWCli-ATkl^-vpporft=+M£lTL_AJHilZUHIAu.1!-<pnim_1.i.dki.it-btwr'tfWehS-v±ctsIn.tilATILJkAApi>Lic&1.1ohisIAtft'<idueLi<13V—O-v-eafviev.1oEt.li.喧SeiriLaJLZPoar*■*-■■!■&.£:St*_ir-tesdt■卜5=c-t-b-sXH/UWE"■■■■*二HR吝■.Q3■、FD-BIL4)甲申令=fK-omMJLTULBReWotesM4.■且3.KtL«BD-MJLTZLABCti-Ta-Eto±>L«-Da-vi>C4C«nf«pu-«a^iECo-imrn'wnac«ilLk-vnS«<£inn:xtWk*it.i£ii£u^.d.ng»■%.—+t.sand.Ca3.H>acl^s-Ifi.£ZuiMt.:r<iJ.Ir13住的巩毋一Rcc4B-d.i.Eii.EXnfi.on.toZDisk串口初始化(主要在打开串口按钮的回调函数中),包括COM端口,BaudRate,DataBits,StopBitsBytesavailable事件设置,主要触发串口响应Bytesavailable事件的条件。BytesAvailableFcnSpecifytheM-functiontoexecutewhenaspecifiednumberofbytesisavailableintheinputbuffer,oraterminatorisread,即指定当一个确定数量的字节数据(由BytesAvailableFcnCount属性设置)存在输入缓冲区时或一个结束符被读到时执行的m文件的回调函数。BytesAvailableFcnCountSpecifythenumberofbytesthatmustbeavailableintheinputbuffertogenerateabytes—availableevent.指定产生bytes-available事件串口输入缓冲区必须存在的字节数。
BytesAvai1ableFcnModeSpecifyifthebytes-availableeventisgeneratedafteraspecifiednumberofbytesisavailableintheinputbuffer,orafteraterminatorisread。指定是由串口输入缓冲区指定数量的字节数产生bytes-available事件还是由读到结束符产生bytes-available事件。(本文选择byte)串口初始化代码:%%%COM端口初始化o_SerialPort=serial(string_Select_COM);set(o_Seria1Port,'BaudRate',double_Baud);%%%Baud初始化set(o_SerialPort,'DataBits',double_DataBit);%%%设置数据长度set(o_SerialPort,'StopBits',double_StopBits);%%%设置停止位长度set(o_SerialPort,'InputBufferSize',1024000);%%%设置输入缓冲区大小为1M%%%串口事件回调设置o_Seria1Port.BytesAvailableFcnMode=,byte';ao_SeriaIPort.BytesAvailableFcnCount=l0;%输入缓冲区存在10个字节触发回调函数劣o_SerialPort.BytesAvailableFcn=(@EveBytesAvailableFcn,handles);%回调函数的指定fopen(o_SerialPort);%打开串口
%这时在M文件中添加回调函数functionEveBytesAvai1ableFcn(t,event,handles)fread(o_SerialPort,10)%在串口输入缓冲区中读取十个字节%其他数据处理及文字显示end6最终实现界面及测试响应我用两台计算机,将串口交叉相连,一台收一台发,最终得出下面测试结果,用一台机器的话只能将串口的2、3脚短接就可以了!雄SerialPaflCion七竺岫I直通i寄"激避畦例sm-心盅矛■■'■■谊1(M11&tlB1121(M11&tlB1125&474X1191191194^99109T1W1?11021184&5竭口号,C^*1B寸波特率g胃败据位貌&—r.停止&L7,关闭率口NONE校验位推收轩向立件十方法制昱示智停搔收显示定用文件数据源.吕动岌/阳加位发送完目动活至按十六进制发送数据辘
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国自动升降机行业市场深度调研及前景趋势与投资研究报告
- 2025-2030中国膨化休闲食品行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国腈纶纤维行业发展现状及发展趋势与投资风险研究报告
- 2025-2030中国脑乐静市场深度调查与投资战略研究研究报告
- 2025-2030中国聚酰亚胺薄膜行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国聚烯烃市场运行态势与竞争新格局透析研究报告
- 2025-2030中国职业辐射监测行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国耐火电缆行业市场发展分析及前景预测与投资发展战略研究报告
- 2025-2030中国美肤茶行业市场发展分析及发展趋势与投资战略研究报告
- 2025年自动焊锡机器人项目可行性研究报告
- 拟行路难教学课件
- GB/T 3733.1-1983卡套式端直通管接头
- 软测量方法原理及实际应用-课件
- 车床教学讲解课件
- 政策目标确立和方案制定概述课件
- 六年级下册英语课件-Unit 4 Lesson 23 Good-bye-冀教版(共19张PPT)
- 张波-超高温陶瓷课件
- 特洛伊战争(英文版)
- DBJ04-T 410-2021城市停车场(库)设施配置标准
- 保洁岗位培训
- 丽声北极星自然拼读绘本第二级 Pad, Pad, Pad! 课件
评论
0/150
提交评论