WriteFile出错,GetLastError得到87。
设置如下,能进行接收数据,但是发送数据返回87。总是发不出去
m_handle=CreateFile(g_comm.comm,GENERIC_READ|GENERIC_WRITE,
0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
if(m_handle==INVALID_HANDLE_VALUE)
return false;
//初始化串口,READBUFFER,WRITEBUFFER是用户自己定义的
SetupComm(m_handle,SERIAL_BUF_NUM,SERIAL_BUF_NUM);
PurgeComm(m_handle,PURGE_TXCLEAR|PURGE_RXCLEAR);
//设置DCB参数
if(!GetCommState(m_handle,&dcb))
{
CloseHandle(m_handle);
return false;
}
dcb.BaudRate=atol(g_comm.btl);
dcb.ByteSize=atoi(g_comm.data);
if(g_comm.parity == "无")
dcb.Parity=NOPARITY;
else if(g_comm.parity == "奇")
dcb.Parity=ODDPARITY;
else
dcb.Parity=EVENPARITY;
if(g_comm.stop == "1")
dcb.StopBits=ONESTOPBIT;
else
dcb.StopBits=TWOSTOPBITS;
if(!SetCommState(m_handle,&dcb))
{
CloseHandle(m_handle);
return false;
}
//设置超时值
COMMTIMEOUTS to;
to.ReadIntervalTimeout=MAXDWORD;
to.ReadTotalTimeoutConstant=500;
to.ReadTotalTimeoutMultiplier=10;
to.WriteTotalTimeoutConstant=0;
to.WriteTotalTimeoutMultiplier=0;
if(!SetCommTimeouts(m_handle,&to))
{
CloseHandle(m_handle);
return false;
}
if(!SetCommMask(m_handle,EV_RXCHAR))
{
CloseHandle(m_handle);
return false;
}
发送函数:
BOOL fWriteStat =WriteFile(m_handle, pBuf->pBuf+pBuf->wReadPtr, num, &sendnum, NULL);
int err=GetLastError();