- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
COM控件在wince串口通讯中的应用
COM在WinCE串口通信中的应用
1.PC和Windows CE的通信系统 Win32的通信系统 Win32提供给用户一个模块化的32位的保护模式的通信系统。在Win32中,各种通信资源的函数做了很大的改进和标准化,使得它们的操作就如同文件的操作一样。 在串口读写操作中,Win32引入了超时概念。超时直接影响读写操作行为。当超过预先设定的超时间隔时间,ReadFile、WriteFile操作仍未结束,那么将无条件结束读写操作,而不论是否已读出或写入指定数量的字符。 Windows CE的通信系统 Windows CE将驱动程序分为两种:本地设备驱动程序和流设备驱动程序。本地设备驱动程序,也称为“内置驱动程序”,这些设备驱动程序是一些硬件所必需的,是由原始设备制造商创建的,用以驱动如键盘、触摸屏、音频设备等,往往在设备售出后就不会再更换。另一方面,流接口设备驱动程序(指可安装的启动程序)可以由第三方生产商提供,以支持添加到系统中的设备。Windows CE下的设备驱动程序在与应用程序相同的保护级上工作。当系统启动时,大多数驱动程序是由设备管理进程(DEVICE.EXE)加载的,所有的这些驱动程序将共享同一个进程地址空间。 本地设备驱动程序一般都被紧紧地限制在Windows CE的操作系统中,往往在设备售出后就不会再更换。因为Windows CE没有像ISA或PCI那样的用于附加插卡的总线,附加的硬件通常是通过PCMCIA或“小型快闪槽”安装的,例如串口2是通过PCMCIA卡实现的。观察注册表中的HKEY_LOCAL_MACHINE下的\Drivers\Active键中的内容,可以了解在Windows CE中加载了什么驱动程序。 通信过程 包括(1)打开通信资源。在进程使用串口之前,首先应使用CreateFile函数打开通信资源,返回一个标识该资源的句柄。在CreateFile函数打开串口通信资源时,系统将根据上次打开资源时的数值初始化和配置资源;(2)读写串口资源。通过ReadFile和WriteFile函数来读写串口。读和写的超时时间由SetCommTimeouts函数设置;(3)关闭通信资源。在使用通信资源结束后,应调用CloseHandle函数来关闭通信句柄,释放资源。2.控件的设计与实现 控件的设计 一般的掌上电脑只配备了串口1,而串口2则需要外接适配卡。本文主要是针对长白公司生产的蓝天LT-90-1机型提供辅助的功能,所以本控件默认使用串口1。由于掌上电脑的资源比较少,为了尽量减少CPU的占用,本控件采用了每一定时间间隔对串口进行采样的方案,对串口的每一次读写采取了限时的方法,保证控件可以在较短的时间结束调用,用牺牲一定的成功率来实现调用的效率,避免无限时的对串口操作的等待而引起的待机。控件的设计包括: 控件目的:提供对串口通信的打开、关闭和读写的控制。 控件设计的主要部分是与使用者之间交互的过程,即控件提供给使用者的函数和通过事件来通知使用者做出相应的处理。下面是本控件所实现的事件和方法。 控件触发的事件:在串口通信的过程中,控件通过如下的两个事件来通知使用者做出处理。 NewData:当此事件被触发时,表示在串口收到新的数据,此时程序应对该事件做出反应,及时收取数据。 WriteError:当此事件被触发时,表示对串口的写操作失败了,此时程序应对错误进行处理。 控件实现的方法:控件提供了四个方法供使用者调用,使用者在得到控件指针后,通过这四个函数来完成对串口的打开、关闭和读写。Open:无参数。在第一次使用时,应调用此函数,对串口进行初始化。默认串口的参数为9600波特率、8位字符、一位校正位、奇偶校验。当初始化成功时返回TRUE,失败时返回FALSE。Read:参数ReadBuffer和ReadSize,ReadBuffer是一个读入字符缓冲区。在NewData事件的响应函数内部,使用Read来读取从串口输入的字符。成功时函数返回TRUE,ReadSize返回读出的字节个数,ReadBuffer返回读出的字符;失败时,函数返回FALSE。Write:参数WtiteBuffer和WriteSize,WriteBuffer是想要写入串口的字符。此函数可在任何时候调用。如果函数返回FALSE,则表示输入的参数有错误;如果函数返回TRUE,则表示输入参数正确。如果在传输的过程中出现了错误,则控件将引发WriteError事件,通知应用程序写操作失败,并由应用程序做出相应的处理。Close:无参数。在串口使用结束后,请调用此函数,它将释放由控件打开的串口资源,以便其他的程序继续使用该资源。 基本的串行通信编程 串行设备被视为用于打开、关闭、读和写串口的常规、可安装
文档评论(0)