使用WriteFile函数写入串口

时间:2012-05-14 08:19:25

标签: c winapi file-io serial-port

我想将串口重写的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;
 }

1 个答案:

答案 0 :(得分:1)

您正在将sizeof(lpBuf)传递给nNumberOfBytesToWrite参数。但sizeof(lpBuf)只是指针的大小。你应该通过dwToWrite我认为。

如果这不能解决您的问题,则hSerial中的其他错误原因无效。

如果您告诉我们这些功能返回了什么,那么在调用GetLastErrorFormatMessage时会遇到麻烦。