0
            cout<<"getting in issue read operation"<<endl;
    ReadFile(hSerial, readbuff, dwBytesRead, &dwBytesRead, NULL);
    cout<<"error: "<<GetLastError()<<endl;
    if (!ReadFile(hSerial, readbuff, dwBytesRead, &dwBytesRead, NULL))
    {
        if (GetLastError() != ERROR_IO_PENDING)
            cout << "Error in communications; report it.";
        else
            fWaitingOnRead = TRUE;
    }

    else
    {
        cout << "no waiting\n";
        cout << "no. of bytes read: " <<dwBytesRead << endl;
        cout<<"read buff: ";
        for (DWORD i = 0; i < sizeof(writebuff); i++)
        {
            cout<< readbuff[i];`enter code here`
        }
        cout<<endl;
    }

我不明白出了什么问题,因为每个 tym 我读了 0 个字节.....帮帮我 plzzz .....

4

1 回答 1

0

您必须检查 ReadFile 返回的值。仅当 ReadFile 返回零时调用 GetLastError。

ReadFile 参数 3 应该是缓冲区的大小。参数 4 应该是一个单独的变量,它将接收实际读取的字节数。

由于您为参数 5 传递 NULL,您将不会获得重叠操作,因此 ReadFile 将永远不会返回 ERROR_IO_PENDING。

如果您使用经过验证的库进行串行端口操作,您可能会取得更大的成功,例如:

http://www.naughter.com/serialport.html

于 2013-07-05T13:58:55.863 回答