在2000下CreateFile成功,但是WriteFile失败,错误号87,同步异步都是如此,而且在有些机器上成功,有些机器失败,但是所有的机器用超级终端测试都是成功的,晕了。
同步代码如下:
//打开串口
ModemInfo[iChannelNo].h_Comm=CreateFile(lpCom,
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL); DWORD aaa=WriteFile(ModemInfo[iChannelNo].h_Comm,acBuffer,strlen(acBuffer),&dwLen,NULL);请各位多多指教阿

解决方案 »

  1.   

    在WriteFile之后调用一下ErrorBox(),看是什么问题
    void ErrorBox()
    {
    LPVOID lpMsgBuf; if(0 != FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | 
    FORMAT_MESSAGE_FROM_SYSTEM | 
    FORMAT_MESSAGE_IGNORE_INSERTS,
    NULL,
    GetLastError(),
    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
    (LPTSTR) &lpMsgBuf,
    0,
    NULL))
    {
    AfxMessageBox((char *) lpMsgBuf);
    }
    else
    {
    char buffer[256]; sprintf(buffer, "Error: %d", GetLastError());
    AfxMessageBox(buffer);
    } LocalFree( lpMsgBuf );
    }
      

  2.   

    其实WriteFile后面调用了GetLastError,错误号是87,意思是输入参数错,莫名其妙阿,在别的机器是正常的