找了太多太多资料,就是没找到一篇完完整整的串口异步通讯,那我就自己写一个示例吧。
#include <iostream>
#include <string>
#include <Windows.h>
void ReadCompletionRoutine(DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped)
{
// 在此处理读完成的数据
// 可以通过参数中的lpOverlapped获取传递的上下文信息
}
void WriteCompletionRoutine(DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped)
{
// 在此处理写完成的数据
// 可以通过参数中的lpOverlapped获取传递的上下文信息
}
int main()
{
std::string str;
std::cout << "test start!! \n";
HANDLE hComm = CreateFile(
"COM5", // 串口名称
GENERIC_READ | GENERIC_WRITE, // 读写权限
0, // 共享模式(0表示不共享)
NULL, // 安全属性(默认)
OPEN_EXISTING, // 打开已存在的串口
FILE_FLAG_OVERLAPPED, // 异步标志
NULL // 模板文件句柄(串口不需要)
);
if (hComm == INVALID_HANDLE_VALUE)
{
std::cout << "Failed to open the COM port!! \n";
std::cin >> str;
return 1;

本文详细介绍了如何使用C++通过WindowsAPI实现异步串口通讯,包括创建文件句柄、配置串口、设置超时、使用OVERLAPPED结构进行异步读写以及处理完成回调。
最低0.47元/天 解锁文章
3610

被折叠的 条评论
为什么被折叠?



