PCとPLC間で通信を行っているのですが、通信速度が測れません。
通信の送受信は成功しているのに、最後に表示させる速度が0のままです。なにがいけないのでしょうか?
// COMポートにデータ送信 (速度計測用)
Sleep(200);
sprintf(SndBuf, "\0");
strcat(SndBuf, "\005");
strcat(SndBuf, "00FFBW0M00");
strcat(SndBuf, "70");
strcat(SndBuf, "011");
strcat(SndBuf, "\r\n");
clock_t start, end; start = clock(); OVERLAPPED ovWrite2; memset(&ovWrite2, 0, sizeof(ovWrite2)); if (WriteFile(Rs232c2, SndBuf, strlen(SndBuf), &dwSize, &ovWrite2) == FALSE){ printf("RS232C WriteFile Error\n"); return -1; } else{ // 送信成功 printf("RS232C WriteFile Success\n"); } printf("%s\n", SndBuf); //データ受信 (速度計測用) // COMポートの受信イベント作成 memset(RcvBuf, 0, sizeof(RcvBuf)); memset(&ovRead, 0, sizeof(ovRead)); ovRead.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); if (ovRead.hEvent == NULL){ printf("RS232C CreateEvent Error\n"); return -1; } // COMポートの受信イベントマスク if (SetCommMask(Rs232c2, EV_RXCHAR) == FALSE){ printf("RS232C SetCommMask Error\n"); return -1; } // COMポートの受信待ち DWORD dwEvtMask = 0; DWORD dwTransfer = 0; if (WaitCommEvent(Rs232c2, &dwEvtMask, &ovRead) == FALSE){ if (GetLastError() == ERROR_IO_PENDING) { GetOverlappedResult(Rs232c2, &ovRead, &dwTransfer, TRUE); } else{ printf("RS232C WaitCommEvent Error\n"); return -1; } } // COMポートの受信イベントチェック if ((dwEvtMask & EV_RXCHAR) == EV_RXCHAR){ // COMポートの受信データチェック COMSTAT comst; DWORD dwErr; ClearCommError(Rs232c2, &dwErr, &comst); // COMポートからデータ受信 if (ReadFile(Rs232c2, RcvBuf, comst.cbInQue, &dwSize, &ovRead) == FALSE){ printf("RS232C ReadFile Error\n"); return -1; } else{ // 受信成功 printf("RS232C ReadFile Success!\n"); } } end = clock();
// printf("%s\n", RcvBuf);
printf("計測時間: %f秒\n", (double)(end - start) / CLOCKS_PER_SEC); ☆
実行結果(☆の部分)
計測時間: 0.000000秒
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。