如何使用 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/