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会使用缺省配置。
windows开发平台1 串口配置
Windows 2000 中使用GetCommState( )函数获取串口的当前配置,使用SetCo
则返回值为零,可以调用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 ( )函数有两个作用,一是清除错误条件,一是确定串口通信状态。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论