Windows API在串口通信中的应用

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

1 引言

在很多情况下,远程监控和工业自动化领域系统经常采用串并口通信编程,其中串行接口被广泛地应用于工程实践的长距离通信中。运用Windows通信API可以在Windows环境下进行串口编程,不用对硬件直接进行操作,并通过VC、VB和Delphi等语言进行调用,大大方便了对数据的处理。本文对和串口通信相关的32位Windows API函数进行了介绍,并给出了相应的程序实例。

2 Windows API简介

Win32 API作为Microsoft 32位平台(包括:Windows 9x,Windows NT3.1/4.0/5.0,WindowsCE)的应用程序编程接口,它是构筑所有32位Windows平台的基石,所有在Windows平台上运行的应用程序都可以调用这些函数。API是windows的核心,从事Windows 应用程序开发,离不开对Win32 API函数的调用。只有充分理解和利用API函数,才能深入到Windows的内部,充分挖掘系统提供的强大功能和灵活性。

3 Windows API相关串口通信函数介绍

在32位的Windows系统中,串口通信是作为文件处理的,串口操作一般为的打开、关闭、读取、写入等操作,相应的Windows API 函数如下:

3.1 打开和关闭串口

1 打开串口

在Windows系统中串口通信会话以调用CreateFile ( )函数开始。CreateFile ( )函数可以读写访问串口,并返回一个句柄,并在以后的端口操作中使用。

一旦串口处于打开状态,就可以分配一个发送缓冲区和接收缓冲区,并且通过调用SetupComm( )函数实现其他初始化工作。

关闭串口通过调用CloseHandle ( )函数关闭由CreatHandle ( )函数返回的句柄来完成。

在用CreatFile ( )函数打开串口后,系统将根据上次打开串口时设置的值来初始化串口,可以集成上次打开操作后的数值,包括设备控制块(DCB)和超时控制结构(COMMTIMEOUTS)。如果是首次打开串口,Windows会使用缺省配置。

1 串口配置

Windows 2000 中使用GetCommState( )函数获取串口的当前配置,使用SetCo mmState ( )函数重新分配串口资源的各个参数。

则返回值为零,可以调用GetLastError ( )函数来获取进一步的错误信息。

GetLastError ( )也是Windows API函数,函数声明如下:

DWORD GetLastError(VOID);

如果应用程序需要修改配置,可以通过调用GetCommState ( )函数获得当前的DCB结构,然后更改DCB结构中的参数,调用SetCommState ( )函数配置修改过的DCB来配置端口。

串口的属性通过GetCommProperties ( )函数获得,GetCommProperties ( )

OP中返回。

3 通信设备配置

Windows API提供了CommConfigDialog ( )函数对通信设备进行配置,从

数中返回,对已打开的串口,对端口设置进行更改通过SetCommState ( )函数来改变。

3.3 读写串口

1 读串口操作

一般在程序中使用Win32 API ReadFile ( )函数从串口中读取数据。

一般在程序中使用Win32 API WriteFile ( )函数向串口中写数据。

3

读、写串口操作中的OVERLAPPED结构用于在Windows中进行异步I/O 操作,使应用程序可以在前台、后台同时执行不同的任务,并由GetOverLapped Result ( )函数获取结果。

4

Windows 2000中读写串口引入了超时结构。超时结构直接影响读和写的操作行为,当事先设定的超时间隔消逝时,ReadFile ( )、WriteFile ( )操作将被无条件结束。

的最大时间间隔;ReadTotalTimoutMultiplier以ms为单位指定一个系数,该系数用来计算读操作的总超时时间;ReadTotalTimouConstant以ms为单位指定一个常数,该常数用来计算读操作的总超时时间;WriteTotalTimoutMultiplier以ms 为单位指定一个系数,该系数用来计算写操作的总超时时间;WriteTotalTimout

5 通信状态和通信错误

如果在串口通信中发生错误,如发生终端、奇偶错误等,I/O操作将会终止。如果程序要进一步执行I/O操作,必须调用ClearCommError ( )函数。ClearCom mError ( )函数有两个作用,一是清除错误条件,一是确定串口通信状态。

4 结束语

Win32 API作为Windows平台的应用程序编程接口,是windows的核心。通过充分理解和利用API函数,可以使我们深入到Windows的内部,充分挖掘系统提供的强大功能和灵活性,为我们在工程实践中进行串口通信编程提供方便。

相关文档
最新文档