欢迎来到天天文库
浏览记录
ID:44703668
大小:19.63 KB
页数:3页
时间:2019-10-25
《WIN32 API串口通信》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、WIN32API串口通信掌握串行通信API函数的用法是掌握串行通信编程技术的关键。在Win32中,系统将串行口与文件统一了起来,对它们的打开、读写、关闭等操作都使用相同的API函数,但是它们之间又有差别,这些差别主要体现在API函数中部分参数的设置上。有关通信的API主要包括打开串口、关闭串口、配置串口、设置缓冲区、设置超时、事件驱动、读串口、写串口等。串口的打开和关闭1:串口的打开。由于在Windows环境中,串口作为一种文件来使用,打开串口用打开文件同样的API函数CreateFile()。函数原型为:HANDLECreateFile(LPCTSTRlpFil
2、eName,DWORDdwDesiredAccess,DWORDdwShareMode,LPSECURITY_ATTRIBUTESlpSecurityAttributes,DWORDdwCreationDisposition,DWORDdwFlagsAndAttributes,HANDLEhTemplateFile);其中几个参数的含义分别为:lpFileName指定文件名或设备名,串口通讯时,它必须是“COMx”,其中的“x”为串口编号,如第一个串口则为“COM1”;dwDesiredAccess为串口读写属性;dwShareMode指定该端口的共享属性,串行口
3、不能作为共享设备,故参数值必须为0;lpSecurityAttributes为安全属性,对于串口应该为0;dwCreationDisposition指文件的创建模式,对于串口必须为OPEN—EXISTING;dwFlagsAndAttributes描述了创建文件的其它属性,对于串行口,有效的设置只能是FILE-FLAG-OVERLAPPED或者0,分别表示异步或同步读写;参数hTemplateFile必须为NULL。返回值:若成功,返回创建的句柄;否则返回INVALID—HANDLE—VALUE。2:串口的关闭。关闭串口相对简单,通过关闭句柄BOOLCloseHa
4、ndle(HANDLEhObject)函数进行,hObject为打开串口时所得到的句柄。句柄关闭后,串口资源即释放,其它程序可以使用。配置串口串行口在打开后,将保持上一次使用的配置,要使之和外设进行通信,必须对串口进行配置,使之和外设保持相同的串口配置,这样才能有效地配置外设并接收数据。在WIN32中,串口的配置主要通过一个称之为COMMCONFIG的结构来实现,此结构包含了一个DCB结构,在DCB中,有波特率、数据位数、停止位、校验位等串行口通信参数,对串口的配置主要即是对这些参数的配置。对COMMCONFIG进行配置的WIN32API主要有一下几个:1:获取默
5、认配置函数。其原型为:BOOLGetDefaultCommConfig(LPCSTRlpszName,LPCOMMCONFIGlpCC,LPDWORDlpdwSize)其参数如下:LpszName为设备名,如“COM1”;lpCC为COMMCONFIG结构体的指针。LpdwSize是lpCC的大小。通过使用此函数可以得到某串口的默认配置,此函数与机器硬件相关,在不同的机器上会有不同的结果,因而容易出错,所以建议用户自己重写此函数,分别对COMMCONFIG的成员进行赋值,这样才稳定可靠。2:得到串口的当前配置,原形如下:BOOLGetCommConfig(HAND
6、LEhCommDev,LPCOMMCONFIGlpCC,LPDWORDlpdwSize)其参数同GetDefaultCommConfig();3:配置串口BOOLSetCommConfig(HANDLEhCommDev,LPCOMMCONFIGlpCC,DWORDdwSize);此函数将由hCommDev指定的串口按lpCC结构体中的内容进行配置。LPCOMMCONFIG结构体中的主要成员是设备控制块结构DCB,在DCB中指定了设备的波特率,奇偶校验位,流控,停止位等参数。4:配置串口的对话框BOOLCommConfigDialog(LPCSTRlpszName,
7、HWNDhWnd,LPCOMMCONFIGlpCC)此函数提供了一个用户熟悉的串口配置对话框,其句柄为hWnd。用户可在此对话框中进行对lpszName指示的串口配置,配置结果存放在lpCC所指向的COMMCONFIG结构体中。5:设置缓冲区WIN32环境下读写串口已经不是传统方式下针对串口的UART进行,而是提供一缓冲区,串口的读写都是针对于此缓冲区进行。确定缓冲区的大小比较重要,太大浪费资源,太小又会使有效数据丢失。用户必须在串口读写前计算出外设流量的大小,按照宁大勿小、有所冗余的原则确定合适大小的缓冲区,再使用SetupComm()函数对串口进行设置。其原型
8、如下:BO
此文档下载收益归作者所有