串行通信与重叠I/O Win 32 系统把文件的概念进行了扩展
无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用 API 函数 CreateFile 来打开或创建的
该函数的声明为: HANDLE CreateFile( LPCTSTR lpFileName, // 文件名 DWORD dwDesiredAccess, // 访问模式 DWORD dwShareMode, // 共享模式 LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 通常为 NULL DWORD dwCreationDistribution, // 创建方式 DWORD dwFlagsAndAttributes, // 文件属性和标志 HANDLE hTemplateFile // 临时文件的句柄,通常为 NULL ); 如 果 调 用 成 功 , 那 么 该 函 数 返 回 文件的句 柄 , 如 果 调 用 失 败 , 则 函 数 返 回INVALID_HANDLE_VALUE
在打开通信设备句柄后,常常需要对串行口进行一些初始化工作
这需要通过一个 DCB 结构来进行
DCB 结构包含了诸如波特率、每个字符的数据位数、奇偶校验和停止位数等信息
在查询或配置置串行口的属性时,都要用 DCB 结构来作为缓冲区
调用 GetCommState 函数可以获得串口的配置,该函数把当前配置填充到一个 DCB 结构中
一般在用 CreateFile 打开串行口后,可以调用 GetCommState 函数来获取串行口的初始配置
要修改串行口的配置,应该先修改 DCB 结构,然后再调用 SetCommState 函数用指定的DCB 结构来设置串行口
除了在 DCB 中的设置外,程序一般还需要设置 I/O 缓冲区的大小和超时
Windows 用I/O 缓