0

関数にシリアルポートwtitingのwriteFile関数を含めて、その関数を何度か呼び出したい。次のコードを書きました。しかし、関数は false を返します。エラーは見つかりませんでした。

bool WriteBuffer (char *lpBuf,DWORD dwToWrite){

//  DWORD dwBytesWritten;
//  DWORD dwToWrite;
printf("%s", lpBuf);

 if(!WriteFile(hSerial, lpBuf, sizeof(lpBuf) ,&dwBytesWritten, NULL))

        { 

        FormatMessage(
        FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        GetLastError(),
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPWSTR)&lastError,
        1024,
        NULL);

    CloseHandle(hSerial);
    hSerial=NULL;
    printf("ERROR in WRITE FILE \n");
    return false;
//Handle Error Condition
}
printf("You wrote'%s'",lpBuf);


 return true;
 }
4

1 に答える 1

1

パラメータに渡しsizeof(lpBuf)ていnNumberOfBytesToWriteます。しかしsizeof(lpBuf)、単にポインターのサイズです。あなたは通り過ぎるはずですdwToWrite

それでも問題が解決しない場合は、エラーの他の原因hSerialが有効でないことです。

GetLastErrorとを呼び出すのに苦労したのでFormatMessage、それらの関数が何を返すかを教えていただければ助かりました。

于 2012-05-14T08:24:37.350 に答える