DWORD dwBytesWrite=5;
COMSTAT ComStat;
DWORD dwErrorFlags;
BOOL bWriteStat;
ClearCommError(hCom,&dwErrorFlags,&ComStat);
bWriteStat=WriteFile(hCom,lpOutBuffer,dwBytesWrite,&dwBytesWrite,NULL);
if(!bWriteStat)
{
AfxMessageBox("写串口失败!");
}
bWriteFile返回的值为0
错误,不能写数据
串口创建过程 //打开并设置COM1
hCom=CreateFile("COM1", GENERIC_READ|GENERIC_WRITE, 0,NULL , OPEN_EXISTING, 
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL);
if (hCom==(HANDLE)-1)
{
AfxMessageBox("打开COM1失败");
return false;
}
else
{
DCB wdcb;
GetCommState (hCom, &wdcb);
wdcb.BaudRate=9600;//波特率:9600,其他:不变
SetCommState (hCom, &wdcb);
SetupComm(hCom, 1024,1024);
PurgeComm(hCom, PURGE_TXCLEAR);
}
谢谢~~

解决方案 »

  1.   

    if (bWriteStat == FALSE)
    {   
        int nError = ::GetLastError();
        if (nError != ERROR_IO_PENDING)
        {
            AfxMessageBox("写串口失败!"); 
        } 
    }
    else
    {
        AfxMessageBox("不见得串口失败!"); 
    }
      

  2.   

    写错了
    if (bWriteStat == FALSE) 
    {    
    int nError = ::GetLastError(); 
    if (nError != ERROR_IO_PENDING) 

    AfxMessageBox("写串口失败!");  

    else
    {
    AfxMessageBox("不见得串口失败!");  
    }
      

  3.   

    晕了,还是写错了
    if (bWriteStat == FALSE) 
    {    
    int nError = ::GetLastError(); 
    if (nError != ERROR_IO_PENDING) 

    AfxMessageBox("不见得串口失败!");  

    else
    {
    AfxMessageBox("写串口失败!");  
    }