0

PCからMCUに文字「a」を送信し、シリアル通信を介してPCに戻します。正確には'a'と表示されるはずなのに何も表示されません。ハイパーターミナルでテストしましたが、正常に動作します。

私のコードに問題がある場合は、指摘してください。ありがとうございました。

char を送信すると問題なく動作するので、コードの一部のみを投稿します。

DWORD dwCommModemStatus;
DWORD dwBytesTransferred;
DWORD bytesWritten;
char receivedData[2] = {0};

char data= 'a';
bool sendChar = WriteFile(hSerial,&data,1,&bytesWritten,NULL);
if(!sendChar){
    printf("WriteFile ERROR\n");
}

SetCommMask(hSerial,EV_RXCHAR);
WaitCommEvent(hSerial, &dwCommModemStatus,0);

if(dwCommModemStatus & EV_RXCHAR){
    if(!ReadFile(hSerial,receivedData,1,&dwBytesTransferred,0)){
        printf("ReadFile Error\n");
    }else{
        printf("%c\n",receivedData[0]);
    }
}
4

1 に答える 1

0

WaitForSingleObject上記のコードには欠落していると思います。

WaitCommEvent戻ってきた場合falseは、待つ必要があります。でこれを行うことができますWaitForSingleObject。このメソッドが返されたWAIT_OBJECT_0場合は、 を使用できますReadFile

詳細については、WaitForSingleObject 関数 (Windows)およびWait 関数 (Windows)を参照してください。

于 2013-02-07T12:01:51.703 に答える