- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SerialCommunicationsinWin32中文版SerialCommunicationsinWin32中文版
翻译:Serial Communications in Win32艾伦很少吃早餐,但是如果他必须挑一个喜欢的事物,Win32 串口通讯将会是最好的选择。摘要:微软Win32下的串口通讯完全不同于Windows下16位的串口通讯,那些熟悉16位下串口通讯功能的将不得不去适当的重新学习许多Win32下串口通讯的系统部分,这篇文章将会帮助你完成这些。对串口通讯不熟悉的那些人通过这篇文章的学习将会为自己以后的研究发展奠定坚实的基础。这篇文章主要以读者熟悉的多线程和Win32下的并行操作为例。除此之外,基于对Win 32堆栈功能的熟悉了解在理解内存管理机制中是非常有用的,比如这篇文章所提到的MTTTY。对于较多关于这些功能的信息,商议平台 SDK 文件的编写,微软公司Win32 SDK 知识库 , 或微软公司网络开发者程序馆。那些控制用户接口和会话视窗的功能界面(APIs)尽管在这里并不做讨论,但是对于完全了解此篇文章提供的例子是非常有用的。对于不熟悉一般微软视窗操作系统的应该在学习串口通讯之前学习一些基本的微软程序设计。换句话说,在潜水之前先沾湿你的脚。绪论:这篇文章的焦点主要是应用程序设计界面(API)和微软公司兼容的方法上,Windows NT 和 Windows 95;因此,API在两个平台上的支持是唯一的探讨。Windows 95 支持 Win32,电话API(TAPI)和Windows NT 3.x不支持;因此,这里我们不讨论TAPI 。然而,TAPI 确实值得一提,它在调制解调器接口和呼叫控制中的应用是非常有用的。一个用调制解调器工作和电话程序应该实现这些TAPI 功能界面。这将允许用另一个TAPI应用程序接口与之紧密结合。此外,这篇文章不讨论Win32下象GetCommProperties的一些配置功能。这篇文章从如下几段入手:打开串口、读写操作(非重叠和重叠)、串口状态(事件和错误)和串口设置(DCB,流量控制和通信超时)。这篇文章所包含的例子MTTTY:多线程TTY诸多功能实现的讨论。它使用了三个线程来实现:一个内存管理用户界面的线程,一个控制所有写操作的线程,一个控制读和改变串口状态的线程。这个例子中的内存管理使用了一些不同的数据堆。它也广泛的利用同步方法促进线程间的通信。打开串口:用CreateFile功能打开一个通信端口。有两种方法调用CreateFile打开端口:重叠的和非重叠。下面是用重叠的方法打开通信资源操作的一个例子:HANDLE hComm;hComm = CreateFile( gszPort,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);if (hComm == INVALID_HANDLE_VALUE)// 打开错误;中断移除标记FILE_FLAG_OVERLAPPED在调用CreateFile非重叠运算中的应用,下一区段将讨论重叠和非重叠运算。当用SDK文件陈述平台打开一个通信端口的时候,CreateFile 的调用有下列各项需求:l fdw共享模式必须为0,通信端口与共享文件用相同的共享方式。可以使用TAPI的功能去共享应用程序间的资源。由于Win32应用程序不能使用TAPI,句柄遗传或者副本对共享通信来说是必需的。副本处理在这篇文章讨论到了;关于更多的信息请先参阅SDK文件平台。l fdwCreate必须指定OPEN_EXISTING标志。l hTemplateFile参数必须为0。传统意义上关于端口的命名是COM1,COM2,COM3,或者COM4。Win32 API不给系统上的端口提供任何确定的机制。Windows NT 和 Windows 95保留了不同系统间的端口共性,所以任何一种方法应用在Win32平台上都比较方便。一些系统甚至比传统的最大4个端口还要多。硬件厂商和驱动程序开发者可以他们喜欢的方式自由命名端口。正是由于这一原因,它可以让使用者更好的去指定他们所需端口的名字。如果一个端口不存在,一个错误将会在尝试打开端口厚出错,并且使用者应该标明此端口不可利用。串口的读写:利用Win32进行串口间通讯的读写操作和Win32下文件的输入输出(I/O)操作是非常相似的。实际上,完成文件输入输出和串口间的输入输出功能是相同的。Win32下的I/O操作可以用两种方法实现:重叠或者非重叠。SDk文件编写平台采用异步和同步方式来完成这些I/O间的操作。在这篇文章中,经常提到重叠和非重叠。非重叠方式的I/O对大多数开发者来说是比较熟悉的,因为它是传统的I/O方式,当功能返回的时候被请求的操作完成。在重叠I/O情况下,当一个操作没有完成和操作完成信号出现时系统将立即调用。程序将利用I/O请求和完成之间的
文档评论(0)