你当前的位置:首页 > 编程技巧 >

API 实现串行通信的查询方法

返回文章列表 作者:老耿 时间:01-27 来源:大测控  字体:【

API 实现串行通信的查询方法


    Visual Basic是一个Windows系统下流行的应用程序开发平台。其方便的界面设计使程序员能节省大量时间,并把最大的精力集中在应用程序核心代码的编写上。VB4目前已成为Win95系统下一种最高效灵活的主流开发工具之一,而调用API应用程序接口则正是对VB4功能的强有力扩充,它使得VB4能够直接控制和处理PC硬件资源,而不必依赖于MS-DOS系统服务。可以说,正是借助于API使得VB即能隐藏大部分Windows编程的难点,同时又提供了使用Windows环境的灵活性。

    因而在串行通信中使用调用API接口的方法是实现在VB中直接控制串行口硬件的简便可行的解决方案。

一、关于Win95的多线程及32位API的描述

    微软于95年推出的Win95操作系统是对其旧版本Windows性能的一次全面提升。它率先提出并实现了应用程序多线程的编程思想,这是Win95系统区别于其他系统最显著和最重要的特征之一。进程是应用程序的执行实例,而线程则是进程内部执行的路径,从根本上说,线程是可由系统调度的一个最简单的代码单元,每个线程有自己的一组CPU寄存器和堆栈。Win95为每个独立的线程安排一些CPU时间,操作系统以轮转方式向线程提供时间片,这样每个线程从外观上看就象都在同时运行一样。一个多线程的应用程序实际上在其内部实现了多任务扩展,为代码赋予了并行执行的特性。

    多线程应用程序的主要优势就是可以用尽量少的时间对用户的要求作出响应。多线程并不代表代码会运行得更快,准确地说,它仅仅意味着应用程序可以更好地利用系统资源(调度机制、内存和物理设备)。从而能建立一个非常灵活的应用程序,它能随时接收用户输入,并得到满意的效果。

    因此为了在32位的Win95系统中建立更快速、可靠和健壮的代码,多线程技术是必须掌握的关键技术之一。

    API(即应用编程接口)是附带在Win95内部的一个极其重要的组成部分。Win95的32位API主要是一系列很复杂的函数、消息的集合。它可以看作是Win95系统为在其下运行的各种开发系统提供的开放式通用功能增强接口。它使编程人员可以更容易地用不同类型的语言编制出运行在Win95系统上的应用程序。

    与Windows 3.x的16位API相比,附带在Win95中的Win32 API是API质量最显著的一次提升。它正逐渐成为应用广泛的一种目标平台。Win32 API包括了1000多个API调用,加上API附带的几百种Windows常量、消息和数据类型结构,使用户拥有了一系列用于Win95编程的复杂的而又有效的工具。

    API接口是对VB功能的最重要的扩充。几乎所有用VB的标准功能不能处理的问题都可以用调用API接口函数的方法来解决。API接口调用不仅给VB提供了大量可扩充的功能强劲的函数。更为重要的是,它提供了一种最切实地扩充VB功能的思路和方法。尤其在一些直接和硬件交互的低级操作中,调用API接口函数往往是唯一的可行办法。

    总之,调用API接口并结合多线程的编程技术已成了Win95环境下最流行的一种高级技术。大多数应用程序的代码都不得不涉及到这个高级专题。

二、Win95串行通信的工作机理

    常用的DOS系统主要是工作在响应中断方式。PC机串行通信程序大多利用其BIOS块的INT14H中断,以查询串口的方式完成异步串行通信。

    与DOS响应中断的工作方式不同,Windows是一个事件驱动的,并与设备无关的多用户操作系统。同时Windows禁止应用程序直接和硬件交互,程序员只能通过Windows提供的各类驱动程序来管理硬件。在这种情况下,Windows系统充当了应用程序与硬件之间的中介。

    Windows系统函数即包含了通信支持中断功能。Win95系统为每个通信设备开辟了用户定义的输入输出缓冲区(即读/写缓冲区),数据进出通信口均由系统后台来完成。应用程序只需完成对输入输出缓冲区操作就可以了。实际过程是每接收一个字符就产生一个低级硬件中断,Win95系统中的串行驱动程序就取得了控制权,并将接收到的字符放入输入数据缓冲区。然后将控制权返还正在运行的应用程序。如果输入缓冲区数据已满,串行驱动程序用当前定义的流控制机制通知发送方停止发送数据。队列中的数据按“先进先出”的次序处理。

    Windows 3.x提供了COMM.DRV驱动程序以支持串行通信,而Win95已对这些串行通信的标准函数作了改进和标准化,并把对串口的支持与基本输入输出驱动程序集成为一体。Win95像对文件操作一样来实现对串口的操作,两者使用相同的打开、关闭及读写函数。

   以下是相应的串行通信函数在16位和32位API中的比较:

    16位的API只提供了16个与通信相关的函数。与这些16位的通信函数相比,Win95提供的通信函数更为丰富,功能更为强大。

    在Win95系统中,串行口和串行通信驱动程序是通过一个数据结构进行配置的,这个数据结构被称为设备控制块( Device Control Block ),简称DCB。Win95的DCB比Windows 3.x的DCB更复杂,对数据结构的定义更完善。

    下面是Win95中设备控制块数据结构的定义:

Type DCB ’在Win95 API中有详细定义,可从VB4的API Text Viewer中得到
DCBlength As Long
BaudRate As Long
fBinary As Long
fParity As Long
……
EvtChar As Byte
End Type
Win95为获取通讯端口的状态提供了重要的GetCommState函数。函数把端口的配置信息装入一个设备控制块DCB,从而获得端口的配置情况。

另一个重要的COMSTAT结构则通常被用来描述串口当前的状态。其定义如下:

Type COMSTAT ’在Win95 API中有详细定义,可从VB4的API Text Viewer中得到
fCtsHold As Long
fDsrHold As Long
……
cbInQue As Long
cbOutQue As Long
End Type
通常可按以下四步实现串行通信:

(1) 按协议的设置初始化并打开串行口,这样做就是通知Windows本应用程序需要这个串口,
并封锁其他应用程序使它们不能使用此串口。
(2) 配置这个串行口。
(3) 在串口上往返地传输数据,并在传输过程中进行校验。
(4) 不需要此串口时,关闭串口。即释放串口以供其它应用程序使用。
在这四个步骤中,主要的程序代码集中在第(3)步。

文章相关
现有0条评论 | 更多评论..

我要发表看法



  如果您还不是本站会员
欢迎加入
  • ※ 评论注意事项:
  • 不是会员或未登陆发表评论,评论人名字显示为匿名。
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规。
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任。
  • 本站管理人员有权保留或删除评论中的任意内容。
  • 参与本评论即表明您已经阅读并接受上述条款。
站内搜索
本栏热门
计算机及通讯技术已成为工业环境中大部分解决方案的核心部分,其在系统中的比重正在迅速增加。在工业控制中,交流电机的拖动越来越多的采用变频器完成,不仅作为一个单独的执行机构,而是随着不断的智能化,同远程计算机之间可以通过各种通讯方式结合成一个有机的整体。
自来水是保障城市经济发展和人民生活的重要基础设施,是保障城市繁荣发展、人民生活以及发展国民经济不可缺少的先决条件。从另一个方面来说,我国是一个高度缺水的发展中国家,随着改革开放的不断深入和发展以及人口数量的不断增长,无论从自来水产量和质量上,社会都对城市供水提供了更高的要求。而实现水厂与供水调度系统的自动化,是保证自来水安全
西门子提供的最新软件:Simatic Net PC-Software CD 2005为各种组态软件的开发提供了一个统一的平台,它建立的PC站既为一些组态软件,如:WinCC、Protol等提供了与PLC的通讯平台,也提供了一套编程接口,可使用高级语言编程通过Simatic Net访问PLC数据。
针对控制系统中上位机与S7-200系列PLC通信的实际问题,总结了几种监控计算机与S7-200系列PLC的通信方法,这几种方法在不同的控制系统中能较好解决监控计算机与S7-200系列PLC通信问题。西门子工控产品在工控领域应用市场中有较高的占有率,S7-200系列PLC是西门子SIMATIC PLC
西门子S7-200PLC是德国西门子公司生产的小型PLC。S7-200以其高可靠性、指令丰富、内置功能丰富、强劲的通讯能力、较高的性价比等特点,在工业控制领域中被广泛应用。S7-200PLC的突出特点之一是自由口通讯功能。如何实现S7-200PLC与个人计算机的互联通信,是S7-200PLC应用

设为首页| 加入收藏| 联系我们
Copyright 2004-2007 Www.plc365.coM All Rights Reserved
免费提供PLC可编程控制器编程资料,应用案例,软件下载
请使用1024*768分辨率浏览本站以达到最佳视觉效果