真的没有人愿意帮帮mm吗?就简单的写串口而已。拜托各位大哥了
各位大虾,我是小鱼儿。对不起,打搅了。拜托在百忙中予以解答,我将万分感谢。
是很简单的写串口问题。我用非阻塞通信,用LPOVERLAPPED结构,可是当WriteFile(hCom,buffer,length,&dwBytesWritten, &OverLapWrite);时,老是dwBytesWritten返回为0。怎么也写不成功。我测试了一下,串口也打开对了,buffer是一个字符数组,length是数组长度。GetLastError()返回值也不等于ERROR_IO_PENDING。以前我也这样写串口的,却没出错啊。这到底是怎么回事呢?
HELP ME!!!
hCom=CreateFile("COM2",GENERIC_WRITE¦GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL¦FILE_FLAG_OVERLAPPED,NULL);
DWORD dwBytesWritten = 0,dwBytesSent = 0,dwError,length;
COMSTAT comstat;BOOL bSuccess = FALSE;
ClearCommError(hCom,&dwError,&comstat);
PurgeComm(hCom, PURGE_RXCLEAR ¦ PURGE_TXCLEAR ¦ PURGE_RXABORT ¦ PURGE_TXABORT);
bSuccess = ::WriteFile(hCom,buffer,length,&dwBytesWritten, &OverLapWrite);
if(bSuccess){AfxMessageBox("succeed");}
else{if(GetLastError() == ERROR_IO_PENDING)
{GetOverlappedResult(hCom, &OverLapWrite, &dwBytesWritten, FALSE);}
else{dwBytesWritten = 0;}