打开ComPort Visual C ++后无法发送数据和接收数据

问题描述

我正在使Windows Console应用程序通过COM端口写入和读取数据。 但是,尽管COM端口已成功打开,但我无法发送和接收任何数据。

“打开COM端口”代码

unsigned int c;
LPCWSTR portCom;
TCHAR ComString[30];
HANDLE hComm;
DCB port;


int main(int argc,char* argv[])
{
// Open COM port  
        _stprintf_s(ComString,11,_T("\\\\.\\COM3"));

        hComm = CreateFile(ComString,GENERIC_READ | GENERIC_WRITE,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);

    if (hComm == INVALID_HANDLE_VALUE)
    {
        abort();
    }

    memset(&port,sizeof(port));
    port.DCBlength = sizeof(port);

    if (!::GetCommState(hComm,&port))
    {
        abort();
    }
    
    port.Baudrate = CBR_115200;
    port.ByteSize = 8;
    port.Parity = nopARITY;
    port.StopBits = OnesTOPBIT;

    if (!::SetCommState(hComm,&port))
    {
        abort();
    }

“发送和接收数据”代码

// Send and receive data 
    unsigned char sendData[8];
    unsigned int rcvData = 0;
    DWORD dwWritten;
    DWORD dwRead;
    sendData[0] = 'A';

    WriteFile(hComm,&sendData[0],1,&dwWritten,NULL);

    dwRead = 0;
    while (dwRead == 0) {
        ReadFile(hComm,&rcvData,&dwRead,NULL);
    }
    return 0;
}

解决方法

我解决了我的问题。 我发现使用CreateFas 0打开COM端口时需要设置FLAG。 谢谢大家。