描述:
我在win2000上运行我的可执行代码,其中串口通信通过下面方式建立的:
m_hCom=CreateFile(m_sPort, GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FLAG_OVERLAPPED, NULL);
if(m_hCom==INVALID_HANDLE_VALUE) return FALSE;
SetupComm(m_hCom,MAXBLOCK,MAXBLOCK);
PurgeComm(m_hCom, PURGE_RXCLEAR | PURGE_RXCLEAR);
SetCommMask(m_hCom, EV_RXCHAR);
当我打开过超级终端进行读取数据后,串口的发送数据就不正常,无法将数据传送出去!发送函数如下:
DWORD CStbDoc::WriteComm(char *buf, DWORD dwLength)
{
BOOL fState;
DWORD length=dwLength;
COMSTAT ComStat;
DWORD dwErrorFlags;
ClearCommError(m_hCom,&dwErrorFlags,&ComStat);
fState=WriteFile(m_hCom,buf,length,&length,&m_osWrite);
if(!fState)
{
if(GetLastError()==ERROR_IO_PENDING)
{
GetOverlappedResult(m_hCom,&m_osWrite,&length,TRUE);// µÈ´ý
}
else
length=0;
}
return length;
}
可否有人指点一下这是为什么?怎么解决?多些!在线等待!