Win32串口API:
串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式),本文主要介绍同步方式。
基本步骤:
1. 打开串口
2. 配置串口
3. 读写串口
4. 关闭串口
API介绍:
打开串口API:
HANDLE hCom=CreateFile( LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDistribution,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile);
· lpFileName:将要打开的串口逻辑名,如“COM1”
· dwDesiredAccess:指定串口访问的类型,可以是读取、写入或二者并列;
· dwShareMode:指定共享属性,由于串口不能共享,该参数必须置为0;
· lpSecurityAttributes:引用安全性属性结构,缺省值为NULL;
· dwCreationDistribution:创建标志,对串口操作该参数必须置为OPEN_EXISTING;
· dwFlagsAndAttributes:属性描述,用于指定该串口是否进行异步操作,该值为FILE_FLAG_OVERLAPPED,表示使用异步的I/O;该值为0,表示同步I/O操作;
· hTemplateFile:对串口而言该参数必须置为NULL;
Example
同步操作方式
HANDLE hCom;
hCom=CreateFile(
“COM1”, //COM1口
GENERIC_READ|GENERIC_WRIRE, //允许读写
0, //独占方式
NULL,
OPEN_EXISTING, //打开而不是创建
0, //同步方式
NULL);
异步读写方式
HANDLE hCom; //全局变量,串口句柄
hCom=CreateFile(
"COM1", //COM1
GENERIC_READ|GENERIC_WRITE, //允许读和写
0, //独占方式
NULL,
OPEN_EXISTING, //打开而不是创建
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, //重叠方式
NULL);
配置串口
在打开通讯设备句柄后,常常需要对串口进行一些初始化配置工作。这需要通过一个DCB结构来进行。DCB结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。在查询或配置串口的属性时,都要用DCB结构来作为缓冲区。一般用CreateFile打开串口后,可以调用GetCommState函数来获取串口的初始配置。要修改串口的配置,应该先修改DCB结构,然后再调用SetCommState函数设置串口。
DCB结构常用变量:
typedef struct _DCB
{
DWORD BaudRate;
//波特率,值:CBR_波特率值,如CBR_2400或者直接写2400
DWORD fParity;
//奇偶校验位,如果是1,允许
BYTE ByteSize; //通信字节数,4-8
BYTE Parity; //指定奇偶校验方式
//EVENPARITY 偶校验 NOPARITY 无校验
//MARKPARITY 标记校验 ODDPARITY 奇校验
BYTE StopBits; //指定停止位的位数
//ONESTOPBIT 1位 TWOSTOPBIT 2位
//ONE2STOPBITS 1.5位
}DCB;