通过 COM 端口的 C++ 通信

标签 c++ windows serial-port

如何使用 C++ 通过 COM 端口与设备通信?是否有处理此问题的 Windows 库?

提前致谢。

编辑:我使用的是 Windows。

最佳答案

您可以使用通用文件 I/O API 调用,例如 CreateFile()ReadFile() 来完成此操作。打开串行端口后,可以使用 GetCommState()SetCommState() 等其他调用来更改串行端口的各种设置。

HANDLE hSerial;
hSerial = CreateFile(
    "COM1",
    GENERIC_READ | GENERIC_WRITE,
    0,
    0,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    0);
if(hSerial==INVALID_HANDLE_VALUE)
{
    if(GetLastError()==ERROR_FILE_NOT_FOUND)
    {
        //serial port does not exist. Inform user.
    }
    //some other error occurred. Inform user.
}


DCB dcbSerialParams = {0};
dcbSerial.DCBlength=sizeof(dcbSerialParams);
if (!GetCommState(hSerial, &dcbSerialParams))
{
    //error getting state
}
dcbSerialParams.BaudRate=CBR_19200;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialParams.Parity=NOPARITY;
if(!SetCommState(hSerial, &dcbSerialParams))
{
    //error setting serial port state
}

关于通过 COM 端口的 C++ 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7035294/

相关文章:

c++ - 简单情况下的 Gcovr 分支覆盖率

C++ : Aliases in function argument

c++ - 库存的动态菜单

windows - 在不询问管理员密码的情况下执行 wamp (windows)

android - 无需轮询即可访问串行端口 (/dev/tty*) 传入数据

c# - 不完整的串口读取 C#

JavaScript/JQuery 与 SerialPort/COM1 通信

c++ - mem_fun 失败,pthread 和类 ptr

c# - 如何通过变量查找分配的内存?

.net - 如何以编程方式将计算机添加到域(使用 .NET)?