欢迎来到人人文库网! | 帮助中心 人人文库renrendoc.com美如初恋!
人人文库网
首页 人人文库网 > 资源分类 > DOC文档下载

第5章 串口的读写和缓冲区数据的显示.doc

  • 资源大小:77.00KB        全文页数:6页
  • 资源格式: DOC        下载权限:游客/注册会员/VIP会员    下载费用:5
游客快捷下载 游客一键下载
会员登录下载
下载资源需要5

邮箱/手机号:
您支付成功后,系统会自动为您创建此邮箱/手机号的账号,密码跟您输入的邮箱/手机号一致,以方便您下次登录下载和查看订单。注:支付完成后需要自己下载文件,并不会自动发送文件哦!

支付方式: 微信支付    支付宝   
验证码:   换一换

友情提示
2、本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器)
3、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

第5章 串口的读写和缓冲区数据的显示.doc

第5章串口的读写和缓冲区数据的显示33第5章串口的读写和缓冲区数据的显示利用WIN32API读写串口时,既可以同步执行,也可以重叠(异步)执行。在同步执行时,函数直接操作完成后才返回。这意味着同步执行时线程会被阻塞,从而导致效率降低,在重叠执行时,即使操作未完成,调用的函数也会立即返回。费时的I/O操作在后台进行这样线程就可以做其他工作。例如.线程可以在不同的句柄上执行I/O操作,甚至可以在同一句柄上同时进行读写操作。“重叠”一词含义就在于此。51读串口操作程序可以使用WIN32APIREADFILE函数从串口读取数据。READFILE函数声明如下BOOLREADFILEHANDLEHFILE,//指向标识的句柄LPVOIDLPBUFFER,//指向一个缓冲区DWORDNNUMBEROFBYTESTOREAD,//读取的字节数LPDWORDLPNUMBEROFBYTESREAD,//指向调用该函数读出的字节数LPOVERLAPPEDLPOVERLAPPED//一个OVERLAPPED的结构其中主要参数介绍如下HFILE指向标识的句柄。对串口来说,就是由CREATEFILE函数返回的句柄。该句柄需拥有GENERICREAD的权限。LPBUFFER指向一个缓冲区、该缓冲区主要用于存放从串口设备中读取的数据。NNUMBEROFBYTESTOREAD指定要从串口设备读取的字节数LPNUMBEROFBYTESREAD指向调用该函数读出的字节数。READFILE在读操作前,首先将其设置为0。WINDOWSNT/2000中当LPOVERLAPPED没有设置时,LPNUMBEROFBYTESREAD必需设置。当LPOVERLAPPED设置时,LPNUMBEROFBYTESREAD可以不设置。这是可以调用GETOVERLAPPEDRESULT函数获取实际的读取数值。WINDOWS9X中这个参数一定要设置LPOVERLAPPED是一个0VERLAPPED的结构,如果HFILE以燕山大学工学学士学位论文34FILE_FLAG_OVERLAPPED方式常见,则需要此结构;否则,不需要此结构。52写串口操作可以使用WIN32API函数WRITEFILE向串口中写数据。WRITEFILE的数声明如下BOOLWRITEFILEHANDLEHFILE,//指向标识的句柄LPVOIDLPBUFFER,//指向一个缓冲区DWORDNNUMBEROFBYTESTOWRITE,//指定要向串口设备写入的Z字节数LPDWORDLPNUMBERSOFBYTESWRITTEN,//指向调用该函数已写入的字节数LPOVERLAPPEDLLPOVERLAPPED//一个OVERLAPPED的结构);其中主要参数介绍如下HFILE指向标识的句柄。对串口来说,就是由CREATEFILE函数返回的句柄。该句柄需拥有GENERICWRITE的权限。PBUFFER指向一个缓冲区,该缓冲区主要用来存放待写入串口设备的数据。NNUMBEROFBYTESTOWRITE指定要向串口设备写入的字节数。LPNUMBERSOFBYTESWRITTEN指向调用该函数已写入出的字节数。WRITEFIIE在写操作前,首先将其设置为0。WINDOWSNT/2000中当LPOVERLAPPED没有设置时,LPNUMBERSOFBYTESWRITTEN必需设置,当LPOVERLAPPED设置时,LPNUMBERSOFBYTESWRITTEN可以不设置。这时可以调用GETOVERLAPPEDRESULT函数获取实际读取数值。WINDOWS9X中这个参数一定要设置。LPOVERLAPPED是一个OVERLAPPED的结构,如果HFILE以FILE_FLAS_OVERLAPPED方式常见,则需要此结构;否则,不需要此结构。第5章串口的读写和缓冲区数据的显示3553异步I/O操作异步(重叠)I/O操作是指应用程序可以在后台读或者写数据.而在前台做其他事情。例如,用程序可以在开始时对1000个数据进行读或写操作,然后返回执行其他的操作;在读写完成后,WINDOWS就会产个一个信号,应用程序得到这个信号,便可以进行其他读写操作。要使用OVERLAPPED结构,CREATEFILE函数的FDWATTRSANDFLAGS参数必须设置为FILE_FLAG_OVERLAPPED标识,读写串口函数必须指定OVERLAPPED结构。异步I/O操作在WINDOWS中使用广泛。OVERLAPPED结构类型声明如下TYPEDEFSTRUCT_OVERLAPPED{DWORDINTERNAL;DWORDINTERNALHIGH;DWORDOFFSET;DWORDOFFSETHIGH;HANDLEHEVENT;}OVERLAPPED;其中主要参数如下INTERNAL操作系统保留,指出一个和系统相关的状态当GETOVERLAPPEDRESULT函数返回时,如果将扩展信息设置为ERROR_IO_PENDING,该参数有效。INTERNALHIGH操作系统保留,指出发送或接收的数据长度。当GETOVERLAPPEDRESULT函数返回值不为0时,该参牧有效。OFFSET和OFFSETHIGH指明文件传送的开始位置和字节偏移量的高位字。当进行端口操作时,这两个参数被忽略。HEVENT指定一个I/O操作完成后触发的事件信号。在调用读写函数进行I/O操作之前,必需设置该参数。异步I/O操作可以由GETOVERLAPPEDRESULT函数来获取结果,也可以使用WINDOWS信号函数来处理。GETOVERLAPPEDRESULT函数可声明为BOOLGETOVERLAPPEDRESULTHANDLEHFILE,LPOVERLAPPPEDLPOVERLAPPED,LPDW0RDLPNUMBEROFBYTESTANSFERRED,燕山大学工学学士学位论文36BOOLBWAIT;其中主要参数介绍如下HFILE标识通信句柄,它应该和开始调用重叠结构的READFILE,WRITEFILE,WAITCOMMEVENT函数的参数一致。LPOVERLAPPED在启动异步操作时指定的0VERLAPPED结构。LPNUMBEROFBYTESTANSFERRED指向一个长整型变量,该变量接收有一个读或写操作实际传递的字节数。BWAIT指定函数是否等待挂起的异步操作完成。如果该参数设为1,该函数知道I/O操作完成后才返回。如果该参数被设为0,同时处于披挂起状态,该函数返回为0,且GETLASTERROR函数返回ERROR_IO_INCOMPLETE。如果该函数调用成功,则返回值不为零,如果函数调用失败,则返回值为零。WINDOWS也使用等待函数来检查事件对象的当前状态或等待WINDOWS状态信号,在WAITFORSINGLEOBJECT函数中指定的OVERLAPPED结构中的HEVENT即可获取函数返回事件。WAITFORSINGLEOBJECT函数的的声明如下DWORDWAITFORSINGLEOBJECTHANDLEHHANDLE,DWORDDWMILLISECONDS;其中主要参数如下HHANDLE指定一个司步时间的勾柄,这里是指OVERLAPPED结构中的HEVENL句柄。DWMILLISECONDS以MS为单位指定超时时间。该函数如果调用成功,则返回值标识该函数导致该函数返回的事件,否则返回值WAIT_FAILE。成功的返回值可以是以下的三个值之一WAIT_ABANDONED等待的对象是互斥对象,并反拥有该对象的线程在终止时候没有释放该对象。WAIT_OBJECT_0指定的对象处于有信号状态。WAIT_TIMEOUT超时事件发生后,指定的对象仍处于无信号状态。如果函数调用成功,则返回值不为0;如果函数调用失败,则返回值为0。如果想获得进一步错误信息,可以调用GETLASTERROR函数来获取。

注意事项

本文(第5章 串口的读写和缓冲区数据的显示.doc)为本站会员(网游小王子)主动上传,人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知人人文库网(发送邮件至[email protected]或直接QQ联系客服),我们立即给予删除!

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

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

网站客服QQ:2846424093    人人文库上传用户QQ群:460291265   

[email protected] 2016-2018  renrendoc.com 网站版权所有   南天在线技术支持

经营许可证编号:苏ICP备12009002号-5