2
COMポートのRDとTDピンを一緒に接続してシリアルポートの通信をテストしています。 COMポートは、以下のコードが実行される前に初期化されています。ReadFile()は空白のデータを返します
CString cs_Send = "F: 5000000 Hz, SF: 1.0, Phase: 10, Position: 50, on sample 1";
BOOL bWriteRC = false;
BOOL bReadRC = false;
DWORD iBytesWritten = 0;
char readBuffer[256] = {"\0"};
DWORD read;
bWriteRC = WriteFile(hPort,cs_Send.GetBuffer(10),cs_Send.GetLength(),&iBytesWritten,NULL);
**Sleep(1000);// Thanks for the advice!!! this Sleep() will fix this error.**
bReadRC = ReadFile(hPort,readBuffer,sizeof(readBuffer),&read,NULL);
if(bWriteRC)
{
if(bReadRC)
{
AfxMessageBox(readBuffer, MB_OK);
}
}
bWriteRCとbReadRCは常にtrueを返します。しかし、最初のメッセージは完全に空白です。これを2回以上実行すると、1番目以降のすべてのメッセージは、送信したメッセージとまったく同じです。私はなぜ最初のものが常に空白であるのだろうかと思います。
WriteFile()の後にFlushFileBuffers(hPort)では機能しません。 **最初のメッセージはまだ空白です。** – user1098761
'ReadFile'を呼び出した後の' read'変数の値は何ですか?そして、あなたは 'CreateFile'をどのように呼び出しましたか? –
'' char csize [256] = {"\ 0"};を追加し、ReadFile()の後にitoa(read、csize、10);を追加します。最初の値は常に0で、次の値は61です。CreateFile()はよく呼び出され、テストの前に常に初期化されています。 1バイトの送信が成功し、CString-wiseテストを完了したいと考えました。 – user1098761