欢迎来到优知文库! | 帮助中心 分享价值,成长自我!
优知文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 优知文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    第一节实现串口通讯的函数及串口编程简介.docx

    • 资源ID:1715296       资源大小:47.26KB        全文页数:24页
    • 资源格式: DOCX        下载积分:7金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录
    二维码
    扫码关注公众号登录
    下载资源需要7金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第一节实现串口通讯的函数及串口编程简介.docx

    第一节实现串口通讯的函数及串口程简介API函数不仅提供打开和读写通讯端1的操作方法,还提供了名目繁多的函数以支持对中行通讯的各种捺作.常用函数及作用F=南数名作用CreateFiIe打开事【GetCommState检测甲门设置SetCommStateBuiIderCommDCBGetCommTImeoU1.S设冏串口用字符中中的值选填充设得控制块检测通信超时设置SetConimTimeoutsSetCommMaskWaitCommEvent设置通信依时卷故设定被监控事件等待被监控事件发生WaitForMuItipIeObjects等待多个ViIKi测对象的结果WriteFite发送数据ReadFiIe接收数据GetoverIappedResu1.t返网蚊后求受(并步)操作结果PurgeCommCtearCommError清空小”援冲区,退出所仃相关操作更新巾口状态结构体,并消除所书用口硬件的误CIoseHandIe关闭出行11用WindowsAPI温。中口程序本身是行巨大优点的,因为控制能力公更强,效率也会更而AP1.编写用I,过程般是这样的:1、创建串口句柄,用CreateFi1.e;2.对串1.1.的参数进行设置,其中比较垂僵的是波特率(BaUdRate),数据宽度(By1.esBits).奇偶校验(Parity),停止位SopBits),当然,我要的还有然1号(Port);3,然后对串口进行相应的读写操作,这时候用到ReadFi1.e和WriteFiIe由数;4.读写结束后.要关闭小U句柄,JHCIoseFiIe下面依次讲述各个步界的过程.第二节创建串口句柄打开事口从字面上去理解.大家也可以发现CreateFIe坡际上表明Windows是把卡口当作一个文件来处理的,所以它也彳f文件那样的缓冲区、句柄、读写错误等,不同的是.这个文件名字只有固定的儿个般为四个),而且始终存在(EXSENG),而“在道用CreateFi1.e的时候请注意它的卷数,CreateFiIe的数原C如下,HAND1.ECreateFie(1.PCTSTRIpFiIeName.DWORD(IwDesiredAccess,DWORDChvShareMode,1.PSECRITYATTRIBUTESIpSecurityAttribUtes.DWORDdwCfeationDisposition.DWORDdwFIagsAndAttributes,HAND1.EhTemp1.ateFite);IpFiIeName:指向一个以NU1.1.结束的字符小.该电指定了要创建.打开或极断的文件'管道、通信海、磁盘设在或控制台的名字.当用CreateFiIe打开小口时,这个忿数可用“COM1”指定出U1,用C0M2-指定*口2,依此类推.dwDsirAccess:指定对文件访问的类型,该参数可以为GENER1.C_READ(指定对该文件的读访问权)或GENER1.JWRrrE(指定该文件的写访问权)曲个值之或同时为为这两个花用ENER1.C_READIGENERIC_WRITE则指定可对;RU进行读写;d/ShareMode:指定此文件可以怎样被共享.因为小行口不支持任何共享模式.所以CiwShareMode必家设为0;IPSeCurityAttnbUteS定义安全属性.一般不用,可设为NU1.1.Win9×卜该参数被忽略:dwCreationDisrbuo定义文件创建方式,对巾口必须设为OPENEXISTING.我水打开已羟存在的文件;C1.wFIagsAndAttributes为该文件指定定义文件属性和标志,这个程序中设为FI1.E_F1.AG_OVER1.APPED,表示异步通信方式:HTempIateFi1.e指向个模板文件的句柄,申门无模板可言,设为NU1.1.在WindOWs9x下该咨教必须为NU1.1.由口被成功打开时,返回其句柄,否则返回INVA1.ID-HAND1.E-VaIue(OXFFFFFFFF).上面说到了扑步,那什么是界步呢?井步是相对同步这个概念而言的.界步,就是说.在进行串口读写操作时,不用等到IQ操作完成后函数才返回,也就是说,异步可以更快得我应用户操作:同步,相反.响应的I/O操作必须完成后函数才返回,否则阻塞线程.对于一些很简单的通讯程序来说,可以选择同步,这样可以省去很多错误检查但是对于女朵一点的应用程序,异步是依佳送挣。实例1:f*e×amp1.e1.cpp/rIishaoan200906-2970inc1.de<windows.h>Winc1.ude<stdo.h>"inc1.ude<stdib.h>boo1.opeport(charportname>WiJFHHIHAND1.EhComm;hComm=CreateFiIe(Ponname,中门JGENERICREADGENER1.C_WRITE,允许读目O.咐讯设的必须以独占方式打开0.无安全帽性OPEN_EXIST1.NG,/通讯设备已存在F1.1.E_F1.AGqVER1.APPED."异力IQ0);“通讯设备不能用模板打开if(hComm=INVA1.ID_HAND1.E_VA1.UE)(C1.oseHand1.e(hComm);returnFA1.SE:Ie1.sereturntrue:voidmain。boo1.open:OPen=OPenPOrtrCOm2");if(open)pri11tf("opencomportsuccess');SyStem("pause。;)programend实例2:*exampe2.cppIishaoan20090629Winc1.ude<vindows.h>inc1.ude<stdio.h>Winc1.ude<std1.b.h>boo1.opeport(charportnameV"开牛口(HAND1.EhComm;hComm=Crea1.eFiIe(POnname.":|:IGENERIC,READGENER1.JWR1.TE,允许读写O./7通讯设得必须以独占方式打开0.无安全屏性OPEN_EX1.ST1.NG.通讯设备已存在0,川可步IQ0);"通讯设需不能用模板打开if(hComm=INVA1.ID_HAND1.E_VA1.UE)C1.oseHande(hComm);returnFA1.SE;)e1.sereturntrue;1voidmain()(boo1.open;open-openport("com2");if(ope)prntf(oencomportsuccess,);systemfpase');)program第三节设Jt串口在打开通信设法句柄后,常常若要对串行口进行一些初始化工作。这需要通过个DCB结构来进行.DCB结构包含了诸加波特率、每个字符的数据位数.奇偶校验和停止位数等信息.在杳询或配置中1的磁性时,都要用DCB结构来作为缓冲区.第次打开串口时,串口设四为系统默认依,函数GetCommState和SetCOmmState可用检索和设定册口设置的DCB(设备拄制块)结构,该结构中BaudRate.ByteSZe、Stopts和Panty字段含有事口波特率、数据位数、停止他和奇偶校验控制等信息.程序中用DCB进行申口设葭时,应先调用APIjsGetCommState.来获得申口的设置信息:GetCommStateO用途:取得串口当前状态1?;B1.GetCommState(HAND1.EhFie,1.PDCBIpDCB);参数说明IhF1.1.e:串口句柄-IPDCB:设备控删块(DeVICeContro1.B1.。Ck)结构培址.此注构中含有和设备相关的参数.此处是与小口相关的参数,由于参数非常多.当褥要设置巾I参数时,通常是先取得牛U的参数结构.修改部分参数后用带参数结构写入.然后在需要设汽的培力对d8进行设置.申11有很多的属性,上面也已经介绍了些收史要的参数.这里介绍数据结构DCB:typedefstruct_DCB/debDWORDDCBIength;DCB结梅体大小DWORDBaudRate;波特率DWORDfBmary:1;"是否是二进制.股设置为TRUEDWORD!Parity:1"是否进行奇隅校验DWORDfOutxCtsFk>w:1;CTS找上的硬件握手DWORDfOutxDsrF1.ow:1:/DSR城上的帙件报户DWORDfDtrContro1.:2;/DTR控制DWORDfDsrSensitivity:1;DWORDxContineO11×offd;DWORDfOutX:1;是杏使用XOMXOFF协议DWORDf1.11×:1;"是否使用×0N.'XOFF桥议DWORDfErrorChar:1;"发送常误协议DWORDfNu1.1.:1:DWORDfRtsCon1.ro1.2;DWORDfAi)rtnErrorJ;DWORDfDummy2J7;WORDwReservd:WORDXon1.im;设网在XON字符发送之前inbuf中允许的最少字节数WORDXoffUm:在发送XOFF字符之前OutbH中允许的最¥字节数BYTEByteSize"/数据宽度.段为8.有时候为7BYTEParity;"奇偶校蛤BYTEStopBits;停止位数charXonChar;设应表示XoN字符的字符,被是采用0x11这个数值CharXOffChar;设黄表示XOFF字符的字符.强是来用0x13这个故依charErrorChar;charEofChar;charEvtChar;WORDV,ReSerVe<ji;)DCB;我们我正在串口编程中用到的数据成员没有几个,在此仅介绍少数的几个常用的参数:DWORDBaUdRa0,串U被特率DWORD(Parity:为1的话激活奇偶校收检代DWORDParity:校验方式,值04分别对应无校验、行校验、偶校粉、校验置位、校验清零DWORDByteSize1个字节的数据位个数,范阳是58DWORDStopBits;停止位个数.02分别对应1位、1.5位、2位停止位然后再末尾调用SetCommState就可以了,还是比较方便的.这样可不必构造个完整的DCB站构.SetCommStateO用途:设置用1状态,包括常用的更改率1号、波特率、奇偶校验方式、数据位数等原他B1.SetCOEmState(HAND1.EhFi1.e.1.PDCBIpDCB);参数说明I-hFie:申【1句柄-IpDCB:设莅控制块(DeViCeContrO1.BIOCk)结构地址。要更改的小口参数包含在此结构中。然后调用Se1.cOmmMaSK用来指定程序接收特定的*11Mf1.闺用SetupComm函数,设置*1.1.缓冲区大小:SetCommMask()说明:用途

    注意事项

    本文(第一节实现串口通讯的函数及串口编程简介.docx)为本站会员(王**)主动上传,优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知优知文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 yzwku网站版权所有

    经营许可证编号:宁ICP备2022001189号-2

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知优知文库网,我们立即给予删除!

    收起
    展开