if(!WriteFile(hSYSCOM, AdtWrite,(DWORD)AiLength, &dwWritten, &osWrite))
{
    if(dwWritten == 0)
    ......
}
之前,端口打开已经成功了!
发送消息的时候,总是失败:[dwWritten  = 0!!!]
急求原因和解决方法..

解决方案 »

  1.   

    既然发送失败了,而你又非常肯定断口打开成功,那最可能的原因就是你的osWrite有问题。
    把owWrite初始化的代码贴出来看看
      

  2.   

    OVERLAPPED osWrite = {0};
    osWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
    if(osWrite.hEvent != NULL)
    {
        DWORD dwWritten; // 串口发送的数据长度
        if(!WriteFile(hSYSCOM, AdtWrite,
    (DWORD)AiLength, &dwWritten, &osWrite))
        {
         .....
        }
    }
      

  3.   

    你使用了非阻塞的IO来发送,实际上该函数马上返回了,真的发送有操作系统进行了。如果不信可以使用GetLastError查看,返回的错误应该是ERROR_IO_PENDING
      

  4.   

    if(!GetOverlappedResult(hSYSCOM, &osWrite, &dwWritten, TRUE))// 等待数据传输完
    {
       .....
    }
    return dwWritten;dwWritten:总是返回零啊!天啊!
      

  5.   

    有没可能是重叠IO操作失败,你有没错误输出?
    GetlastError(),就可以看出是什么问题了。