c++,delph,serialcomm,comport.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c,delph,serialcomm,comport

WINDOWS95与NT下微机与智能化仪的串行通信设计 收藏此信息?推荐给好友?2009-6-12?来源:机电商情网 前言   随着计算机软硬件的是益发展,基于Windows95及NT平台的软件越来越多,在智能化电子仪表及计算机控制系统中都涉及到计算机与智能仪或计算机之间进行信息交换,而串行通信是计算机之间以及计算机与单片机等数字化仪器通信的一种重要手段,是实现工业监控的一种主要方式,由于它高效可靠,价格便宜,遵循统一的标准,因而得到广泛应用。随着计算机技术不断发展,编程手段也不断提高,如Visual Basic 、Delphi 、Visual C++ 以及 C++ Builder等采用面向对象构件的方法,使得编写Windows下的应用程序变得迅速和容易 ,其中Delphi功能强大,代码效率高,深受软件开发人员睛睐, 但Delphi同Visual C++ 以及 C++ Builder一样均未提供通信构件,为此用Delphi开发通信应用软件时就得应用API函数或Visual Basic的通信构件,API函数对一般开发人员有一定难度而且不太方便 ,而用VB 的通信构件开发的应用程序需在WINDOWS95或NT中安装并注删相应的动态库才能运行,这对应用用户来说很不方便。为此本文介绍用API函数和多线程编程技术在Delphi3.0下设计出自已的通信构件,并提供了全部源程序,利用Delphi安装新构件方法将其安装到自已的编译系统中,就可以十分方便地开发出通信程序,该构件在智能超声液体成份分析仪及集散式网络测控热处理系统的被成功地应用。从中可以看出利用Delphi编制构件不断丰富Delphi的内容的方法。 1 串行通信构件设计思想   一般基于DOS编程的程序员在编写串行通信时,往往是编写一个中断服务程序,一旦串行口有数据它就会向CPU发出中断请求,CPU在响应该中断后会执行串口的中断服务程序,从而完成预定的任务。在Windows操作系统下,由于Windows禁止应用程序直接和硬件打交道,所以程序员只能使用Windows提供的标准函数编程。虽然由于无需对硬件编程对有关硬件调试方便,但Windows本身远比DOS复杂,所以对这些标准函数和它们携带参数的理解和使用也远比DOS困难,在Windows3.X中,当一个通信设备被打开并允许传送WM-COMMNOTIFY消息时,只要该通信设备收到数据,操作系统就会在消息队列中置入WM-COMMNOTIFY消息,应用程序可以通过截获操作系统发出的WM-COMMNOTIFY消息来对已打开的通信设备进行操作。   在Windows95与NT中,修改了Windows3.X对串行口操作的标准函数,进行了更统一的规范化,取消了WM-COMMNOTIFY消息以及OpenComm,CloseComm,ReadComm,WriteComm,FlushComm等函数,对待串行口操作如同文件一样,其串行设备的打开和关闭操作使用与文件打开与关闭操作相同的函数,如CreatFile,CloseFile,ReadFile,WriteFile,PurgeComm等,由于Windows95与NT中允许用户定义大小的读写缓冲区,这样数据丢失可能性很小,同时使得读写速度很快。在Windows95与NT中支持多线程编程技术,而Delphi3.0为多线程编程和编制构件提供了支持,这样就可以编制串行通信构件了,即建立新的“.pak”文件就行了。   考虑到篇幅,在这个构件中只提供必要且够一般常用的几个属性和当输入缓冲有数据时而产生的事件,这些属性中可视属性为波特率、数据位、效验位、停止位、串行口名、输入缓冲大小(即读缓冲)、输出缓冲大小(即写缓冲)、触发事件方式;运行属性有串口设备句柄、消息窗句柄、事件句柄;运行中的方法有端口打开和端口关闭函数。   构件的设计思想是:可视属性中的数据位、效验位、停止位、触发事件方式用梅举类型定义,编程人员将方便地选择所需的值就行了,可视属性中波特率、串行口名、输入缓冲大小、输出缓冲大小由编程人员输入设定;触发事件方式有每收一字符触发和一队列收到后触发。在构件的创建过程中将可视属性赋缺省值,当程序运行构件的端口打开函数(ComPortOpen )时,将串口按构件可视属性设定值进行端口初始化及创建监视串口线程并返回端口句柄(hCommFile);监视线程的作用是,按触发事件方式监视串口,当串口有数据时就向窗函数发出自定义的WM_COMMNOTIFY消息,窗函数收到WM_COMMNOTIFY消息后触发OnComm事件;当执行端口关闭函数(comPortClose)时,该函数关闭端口并撤消监视线程。程序流程图为图1。 图 1 2 应用说明   当执行ComPortOpen函数(即方法)时,用CreatFil

文档评论(0)

ikangyme + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档