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;
    }

私は何がうまくいかないのか理解できません。各ティムが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 に答える