0

我想将串口的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无效。

费尽心思调用GetLastErrorandFormatMessage之后,如果您能告诉我们这些函数返回了什么,那将会很有帮助。

于 2012-05-14T08:24:37.350 回答