通过COM端口进行C ++通信

时间:2011-08-12 03:27:37

标签: c++ windows serial-port

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

提前致谢。

编辑:我正在使用Windows。

2 个答案:

答案 0 :(得分:6)

您可以使用常规文件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
}

答案 1 :(得分:1)

如果您使用Google,网络上有大量示例代码。这是一个例子:http://members.ee.net/brey/Serial.pdf