基于VB的串口通讯及其软件实现(精)

  • 格式:doc
  • 大小:29.00 KB
  • 文档页数:2

下载文档原格式

  / 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于VB的串口通讯及其软件实现

摘要:串口通信因为其简单,灵活易用,在许多领域有着广阔的应用前景。本文在深入了解串口通讯技术的基础上,结合自身的工程实践经验,阐述了VB串口编程的技术要点。并结合一个通讯实例,分析通讯的具体实现,给相关领域的研究人员提供值得参考的信息。关键词:串

口;RS232;API;Pcomm;Mscomm;通信程序Abstract:Serial communication has broad application in many fields because of its simple communication circuitry and flexibility. Based on deep comprehension of the technology of the serial communications, this article expounds important technology detail integrated with practice experience. An example of communication program is presented and analyzed, which gives other researchers valuable reference information. Key words:serial; RS232; API; Pcomm; Mscomm; communication program

现在通讯方式越来越多,速度越来越快,但串行通讯由于自身价格低、协议透明、硬件投资少、软件编程简单等诸多优点在远程数据采集、监视、通信及控制领域里一直占据着极其重要的地位。它不仅没有因为时代的进步而被淘汰,反而在规格上越来越完善、应用越来越广,长久不衰。1串口通信的通信机理PC串行通信是指直接对串行端口的UART(PC机的通用异步收发器,也叫异步通信适配器,是PC机用于异步通信的接口)进行编程实现的通信。PC机每个UART中的INS8250中有10个可编程的单字节寄存器,可用于控制、监视操作串行端口,COM1的寄存器地址3F8H-3FEH,COM2的寄存器地址为

2F8H-2FEH。10个寄存器由7个地址访问,其中5个寄存器的访问条件是先设置3FBH线路控制寄存器的最高位为“1”,该位也称为DLAB状态位。[1] 一

般说来,PC机都有一个或多个串行端口,它们依次为Com1、Com2……。这些串口提供了外部设备与PC进行数据传输和通信的通道,在CPU和外设之间充当了解释器的角色。当字符数据从CPU发送给外设时,这些字符数据将被转换成串行比特流数据;而当接受数据时,从外界进来的比特流数据被转换成字符数据传递给CPU进行处理。在操作系统方面,Windows用通信驱动程序(COMM.DRV)调用API

函数发送和接受数据。当用通信控件或声明调用API函数时,它们由COMM.DRV

解释并传递给设备驱动程序。作为一个VB程序员,要编写串口通信程序,只需知道通信控件提供给Windows通信API函数的接口即可,换言之,只需设定和监视通信控件的属性和时间即可。

2串行通讯接口RS-232 前一章节讨论了串口通讯的通信机理,但为了实现具体的数据采集、监视、通信功能,必须了解具体的串口形式。目前使用最广泛的串行接口有两种:RS-232和RS-485。本文着重讨论RS-232,RS- 485不作介绍。RS-232C标准的全称是EIA-RS-232C标准,其中EIA代表美国电子工业协会,RS代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969年),在这之前,有RS232A、RS232B协议。它规定连接电缆

和机械、电气特性、信号功能及传送过程。EIA-RS-232C定义了按位串行传输

的数据终端设备(DTE)和数据通讯设备(DCE)之间的接口信息。RS-232C是从DTE 或计算机串行接口角度来定义引脚信号的。目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS232被定义为一种在低速率串行通讯中增

加通讯距离的单端标准。RS232采取不平衡传输方式,即所谓的单端通讯。[2]

DB9(9针串口)的接线方式如下:1脚,数据载波检测DCD;2脚,接收数据RXD;3脚,发送数据TXD;4脚,数据终端准备DTR;5脚,信号地GND;6脚,数据设备就绪DSR;7脚,请求发送RTS;8脚,清除发送CTS;9脚,振铃指示DELL。DB25(25阵串口),常用的针脚也有9个,且和DB9可以一一对应,具体接线方式为:8脚,

数据载波检测DCD;3脚,接收数据RXD;2脚,发送数据TXD;20脚,数据终端准备DTR;7脚,信号地GND;6脚,数据设备就绪DSR;4脚,请求发送RTS;5脚,清除发

送CTS;22脚,振铃指示DELL。一般来说,对于要求不太高的场合,使用接

收数据RXD,发送数据TXD,信号地GND三个脚即可实现数据传输。如果要求有硬件流控制,则必须使用DTR、DSR、RTS和CTS这四个脚。值得注意的是

RS-232C是用正负电压来表示逻辑状态,与TTL以高电平表示逻辑状态的规定不同。因此,为了能够与计算机接口或终端的TTL器件连接,必须在RS-232C与

TTL电路之间进行电平和逻辑关系的变换。目前较为广泛地使用集成电路转换

器件,如MC1489、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。3三种读取串口数据的方式目前通用的串口通讯的软件实现方式有3种,本文都进行详细的介绍,它们各有自身的优缺点,读者在编程时可根据具体的情况选择合适的方式。 3.1利用Mscomm控件VB提供的这个通信控件“隐藏”了大部分串口通信的底层运行过程,程序员只需编写少量的代码就可以完成软件的开发过程。在通信数据量不大,通信要求不是很高的情况下建议采取此方式。利用Mscomm控件实现通信最需要掌握的就是它的几个主要属性,下面选取其中重要的进行介绍,其余的可以参考相关资料。[3]

(1)Settings属性:以字符串的形式设置并返回波特率、奇偶校

验位、数据位、停止位。这个属性很重要,针对不同的终端设备需要根据设备的具体情况进行调整(比如日本的设备不同于美国的设备,通常会采用奇校验)。

(2)InputMode属性:设置接收数据的类型,0为文本格式,1为二进制格式。

(3)Input属性:读取并删除接收缓冲区中的数据流。(4)Output属性:向发送缓冲区传送一数据流。(5)Rthreshold属性:该属性为一阀值,它确定当接收缓冲区内的字节个数达到或超过该值后就产生代码为ComEvReceive的OnComm事件。(6)Handshaking属性:设置和返回握手协议,即计算机内部CPU与串口之间的通讯协议,保证在缓冲区过载时数据不会丢失。这个属性在保证数据传输的正确性方面有很大的作用,共有四个选项,分别表示:①无流控

制;②软件流控制;③硬件流控制;④软硬件流控制。采用硬件流控时,要求串口之间和电缆支持硬件握手,在自己制作串口通信线时,有关硬件握手的线RTS、CTS、DSR、DTR要连接正确。在正确设置这些属性的基础上,剩下的就是

打开串口,通过串口发送及接受数据了。本文后续章节利用一个实例详细讲解了这些属性的设置及具体代码。 3.2直接调用Win32 API通信函数直

接调用Windows API函数,可以清楚地理解串口通信的机制,根据需要灵活地配置串口的各种参数和属性,而且直接调用低层API函数,通信效率比较高,但付出的代价就是程序较复杂,编程周期长,适合于大型通信程序及通讯质量要求较高的场合。在32位的Windows系统中,串口通信是作为文件处理的,串口操作一般为打开、关闭、读取、写入等操作,相应的Windows API函数如下:[4] (1) CreateFile()函数:实现串口的初始化并打开串口,返回串口句柄资源以供后续进程调用。(2) CloseFile()函数:关闭串口,串口是非共享资源,应用程序以独占方式使用,通信结束应立即关闭。

相关主题