Windows 中与串口通信相关的 API381


简介

串口接口(也称为串行端口或 COM 端口)是一种古老而常见的硬件接口,用于与各种设备(如调制解调器、打印机和微控制器)进行通信。Windows 操作系统提供了一系列 API,使开发人员能够与串口通信,从而实现数据传输、设备控制和诊断。

CreateFile 函数

CreateFile 函数用于打开串口设备。它需要指定串口设备的名称(例如 "COM1")和所需的访问权限(例如读写)。如果成功,该函数将返回一个句柄,用于后续与串口的交互。HANDLE CreateFile(
LPCSTR lpFileName, // 串口设备名称
DWORD dwDesiredAccess, // 访问权限
DWORD dwShareMode, // 共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 安全属性
DWORD dwCreationDisposition, // 创建方式
DWORD dwFlagsAndAttributes, // 标志和属性
HANDLE hTemplateFile // 模板文件句柄
);

ReadFile 函数和 WriteFile 函数

ReadFile 函数和 WriteFile 函数分别用于从串口读取数据和向串口写入数据。这些函数需要指定串口句柄和要读取或写入的缓冲区。如果成功,它们将返回已读取或写入的字节数。BOOL ReadFile(
HANDLE hFile, // 串口句柄
LPVOID lpBuffer, // 输入缓冲区
DWORD nNumberOfBytesToRead, // 要读取的字节数
LPDWORD lpNumberOfBytesRead, // 已读取的字节数
LPOVERLAPPED lpOverlapped // 重叠 I/O
);
BOOL WriteFile(
HANDLE hFile, // 串口句柄
LPCVOID lpBuffer, // 输出缓冲区
DWORD nNumberOfBytesToWrite, // 要写入的字节数
LPDWORD lpNumberOfBytesWritten, // 已写入的字节数
LPOVERLAPPED lpOverlapped // 重叠 I/O
);

SetCommState 函数

SetCommState 函数用于设置串口的通信参数,例如波特率、数据位、奇偶校验和停止位。这些参数决定了串口如何与其他设备通信。BOOL SetCommState(
HANDLE hFile, // 串口句柄
LPDCB lpDCB // 通信参数结构
);

ClearCommError 函数

ClearCommError 函数用于获取和清除与串口相关的错误。它报告错误类型(例如帧错误、溢出和缓冲区空)并允许应用程序恢复通信。BOOL ClearCommError(
HANDLE hFile, // 串口句柄
LPDWORD lpErrors, // 错误类型
LPUARTCT1 lpStat // 通信状态
);

GetCommState 函数

GetCommState 函数用于检索串口的当前通信参数。这对于验证所做的更改或诊断通信问题很有用。BOOL GetCommState(
HANDLE hFile, // 串口句柄
LPDCB lpDCB // 通信参数结构
);

DCB 结构

DCB 结构包含串口通信参数。它指定了波特率、数据位、奇偶校验、停止位、超时等设置。可以使用 SetCommState 函数设置和使用 GetCommState 函数检索 DCB 结构。typedef struct _DCB {
DWORD DCBlength; // 结构大小
DWORD BaudRate; // 波特率
BYTE ByteSize; // 数据位
BYTE Parity; // 奇偶校验
BYTE StopBits; // 停止位
BYTE fBinary; // 二进制模式
BYTE fParity; // 使用奇偶校验
BYTE fOutxCtsFlow; // 输出 CTS 流控制
BYTE fOutxDsrFlow; // 输出 DSR 流控制
BYTE fDtrControl; // DTR 控制
BYTE fRtsControl; // RTS 控制
BYTE fAbortOnError; // 发生错误时中止
BYTE fDummy2; // 保留
DWORD fDummy4; // 保留
WORD wReserved; // 保留
CHAR XonChar; // XON 字符
CHAR XoffChar; // XOFF 字符
CHAR ErrorChar; // 错误字符
CHAR EofChar; // EOF 字符
CHAR EvtChar; // 事件字符
WORD wReserved1; // 保留
} DCB, *LPDCBB96;

其他 API

除了上述 API 之外,Windows 还提供了其他与串口通信相关的 API,例如 EscapeCommFunction 函数(用于控制调制解调器和其他设备)、BuildCommDCB 函数(用于创建 DCB 结构)和 GetCommProperties 函数(用于获取串口设备的属性)。

示例代码

下面是一个使用 CreateFile、ReadFile 和 WriteFile 函数与串口进行通信的简单示例代码:#include
#include
int main()
{
HANDLE hSerial;
char buffer[1024];
DWORD bytesRead, bytesWritten;
// 以读写方式打开串口
hSerial = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hSerial == INVALID_HANDLE_VALUE)
{
printf("无法打开串口 COM1");
return 1;
}
// 设置通信参数
DCB dcb;
GetCommState(hSerial, &dcb);
= 9600;
= 8;
= NOPARITY;
= ONESTOPBIT;
SetCommState(hSerial, &dcb);
// 读取串口数据
ReadFile(hSerial, buffer, sizeof(buffer), &bytesRead, NULL);
printf("已读取 %d 字节数据:%s", bytesRead, buffer);
// 向串口写入数据
strcpy(buffer, "Hello World!");
WriteFile(hSerial, buffer, strlen(buffer), &bytesWritten, NULL);
printf("已写入 %d 字节数据:%s", bytesWritten, buffer);
// 关闭串口
CloseHandle(hSerial);
return 0;
}

2025-02-15


上一篇:Windows 11 揭秘:创新与革命的融合

下一篇:iOS 系统和 OS 系统:操作系统领域的巨头

新文章
macOS与Windows深度解析:从系统架构、生态到应用场景的专家级比较与选择
macOS与Windows深度解析:从系统架构、生态到应用场景的专家级比较与选择
6小时前
鸿蒙OS:构建全场景智慧生态的分布式操作系统深度解析
鸿蒙OS:构建全场景智慧生态的分布式操作系统深度解析
6小时前
深度解析苹果iOS操作系统:从核心架构到软件生态的极致体验
深度解析苹果iOS操作系统:从核心架构到软件生态的极致体验
6小时前
正版与盗版之战:深度解析Windows盗版系统的技术风险、检测机制与合规之路
正版与盗版之战:深度解析Windows盗版系统的技术风险、检测机制与合规之路
6小时前
Android操作系统在智能化报修系统中的核心作用与技术实现深度解析
Android操作系统在智能化报修系统中的核心作用与技术实现深度解析
6小时前
深入解析Windows临时目录:从原理到管理与优化
深入解析Windows临时目录:从原理到管理与优化
6小时前
华为Mate 30与鸿蒙系统:深度解析分布式OS的崛起与全场景智慧生态
华为Mate 30与鸿蒙系统:深度解析分布式OS的崛起与全场景智慧生态
6小时前
鸿蒙系统小组件深度解析:从隐藏管理到智能桌面体验优化
鸿蒙系统小组件深度解析:从隐藏管理到智能桌面体验优化
6小时前
深入解析Windows常用文件系统:NTFS, FAT32, exFAT及更多
深入解析Windows常用文件系统:NTFS, FAT32, exFAT及更多
7小时前
OPPO手机Android系统更新深度解析:从用户操作到幕后技术与最佳实践
OPPO手机Android系统更新深度解析:从用户操作到幕后技术与最佳实践
7小时前
热门文章
iOS 系统的局限性
iOS 系统的局限性
12-24 19:45
Linux USB 设备文件系统
Linux USB 设备文件系统
11-19 00:26
Mac OS 9:革命性操作系统的深度剖析
Mac OS 9:革命性操作系统的深度剖析
11-05 18:10
华为鸿蒙操作系统:业界领先的分布式操作系统
华为鸿蒙操作系统:业界领先的分布式操作系统
11-06 11:48
**三星 One UI 与华为 HarmonyOS 操作系统:详尽对比**
**三星 One UI 与华为 HarmonyOS 操作系统:详尽对比**
10-29 23:20
macOS 直接安装新系统,保留原有数据
macOS 直接安装新系统,保留原有数据
12-08 09:14
Windows系统精简指南:优化性能和提高效率
Windows系统精简指南:优化性能和提高效率
12-07 05:07
macOS 系统语言更改指南 [专家详解]
macOS 系统语言更改指南 [专家详解]
11-04 06:28
iOS 操作系统:移动领域的先驱
iOS 操作系统:移动领域的先驱
10-18 12:37
华为鸿蒙系统:全面赋能多场景智慧体验
华为鸿蒙系统:全面赋能多场景智慧体验
10-17 22:49