if(!WriteFile(hCom,buffer,length,&leng,&Overlapped))
buff.Format( buff, "  %d\n", GetLastError());
MessageBox(buff);// 写串口
// WriteFile(hCom,buffer,length,&leng,&Overlapped);
CloseHandle(hCom);上面的代码很怪异,当用if(!WriteFile(hCom,buffer,length,&leng,&Overlapped))
buff.Format( buff, "  %d\n", GetLastError());
MessageBox(buff);// 写串口
时串口输出正常,
而把上面的注释掉,用WriteFile(hCom,buffer,length,&leng,&Overlapped);
就不会在串口输出东西,不知道为什么,请大家来说说

解决方案 »

  1.   

    没区别啊,只是判断了一下写没写进去if(!WriteFile(hCom,buffer,length,&leng,&Overlapped)) //写串口
    buff.Format( buff, "  %d\n", GetLastError()); //如果错误,得到错误信息
    MessageBox(buff);                        //不管错不错,显示提示???
    // WriteFile(hCom,buffer,length,&leng,&Overlapped); //正常应该是上面那样写,这样写错了也不知道
    CloseHandle(hCom); 
      

  2.   

    我觉得你的代码写的很奇怪if(!WriteFile(hCom,buffer,length,&leng,&Overlapped)) 
    buff.Format( buff, "  %d\n", GetLastError()); 
    MessageBox(buff);// 写串口 
    // WriteFile(hCom,buffer,length,&leng,&Overlapped); 
    CloseHandle(hCom); 你这样,与
    if(!WriteFile(hCom,buffer,length,&leng,&Overlapped)) 
    {
       buff.Format( buff, "  %d\n", GetLastError()); 
    }
    MessageBox(buff);// 写串口 
    // WriteFile(hCom,buffer,length,&leng,&Overlapped); 
    CloseHandle(hCom);这样作用是一样的,请问你的本意是这样吗?还是你的本意是:
    if(!WriteFile(hCom,buffer,length,&leng,&Overlapped)) 
    {
       buff.Format( buff, "  %d\n", GetLastError());     MessageBox(buff);// 写串口 
        // WriteFile(hCom,buffer,length,&leng,&Overlapped); 
        CloseHandle(hCom);
    }这样写,和
    WriteFile(hCom,buffer,length,&leng,&Overlapped);   buff.Format( buff, "  %d\n", GetLastError());     MessageBox(buff);// 写串口 
        // WriteFile(hCom,buffer,length,&leng,&Overlapped); 
        CloseHandle(hCom);这样写结果是一样的
      

  3.   

    注意
    true 和false判断0代表FALSE 
    而不等于0都为TRUE 
    明白了吧
    小孩