繁体   English   中英

使用 C++ 手柄发送/接收串口 (COM) 数据

[英]Sending/Receiving serial port (COM) data with C++ Handle

在使用本指南中显示的方法时,我需要一些帮助来了解如何在 C++ 中使用 ReadFile 和 WriteFile:

https://www.delftstack.com/howto/cpp/cpp-serial-communication/

我的问题是,如何使用这两个函数来发送或接收任何东西? 我不知道如何正确称呼他们

我从句柄开始:

// Open serial port
HANDLE serialHandle;

serialHandle = CreateFile(L"COM3", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

接下来我做了一些基本设置,比如设置波特率、字节大小等。我将跳过它。 在这里,我们来解决我的问题。 我尝试发送一些数据并接收它(我的电缆 output 和输入引脚已连接)。 问题是我不知道如何正确调用 ReadFile 和 WriteFile。 这是我尝试这样做的方法:

    char sBuff[n + 1] = { 0 };
    DWORD send = 0;
    cout << "Sent: " << WriteFile(serialHandle, sBuff, n, &send, NULL) << endl;

    DWORD dwRead = 0;
    cout << "Received: " << ReadFile(serialHandle, sBuff, n, &dwRead, NULL) << endl;

    CloseHandle(serialHandle);
}
}

这只是猜测正确方法的一些尝试。 任何带有简短解释的示例将不胜感激。

编辑:删除了无用的代码块,希望我的问题现在更容易理解

这完全是关于将句柄“serialHandle”设置为 com3 端口而不是文件。 第一个问题,在你写代码的那一层,你不应该担心发送和接收的同步或干扰。 串行端口处理程序协调它。 第二个问题,您的数据是作为 ASCII 字符串发送的。 您必须在接收中编写一个名为 extract(reciedData) 的 function 并将您的变量放在 integer 或双精度或字符串中。 事实上,您需要一个协议,例如 NMEA。 请在 google 中搜索 aboat NMEA 协议

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM