// TODO: Add extra initialization here
DWORD dwError;
hCom=CreateFile("COM4",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
if(hCom==INVALID_HANDLE_VALUE)
{
dwError=GetLastError();
AfxMessageBox("打开串口失败");
return FALSE;
}
COMMTIMEOUTS TimeOuts;
TimeOuts.ReadIntervalTimeout=MAXDWORD;
TimeOuts.ReadTotalTimeoutMultiplier=0;
TimeOuts.ReadTotalTimeoutConstant=0;
TimeOuts.WriteTotalTimeoutMultiplier=100;
TimeOuts.WriteTotalTimeoutConstant=500;
SetCommTimeouts(hCom,&TimeOuts); DCB dcb;
GetCommState(hCom,&dcb);
dcb.BaudRate=CBR_38400;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=TWOSTOPBITS;
SetCommState(hCom,&dcb);
SetupComm(hCom, 4096, 4096);
PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR);
return TRUE; // return TRUE unless you set the focus to a control
为什么总是返回0xffffff?
hCom是全局函数
DWORD dwError;
hCom=CreateFile("COM4",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
if(hCom==INVALID_HANDLE_VALUE)
{
dwError=GetLastError();
AfxMessageBox("打开串口失败");
return FALSE;
}
COMMTIMEOUTS TimeOuts;
TimeOuts.ReadIntervalTimeout=MAXDWORD;
TimeOuts.ReadTotalTimeoutMultiplier=0;
TimeOuts.ReadTotalTimeoutConstant=0;
TimeOuts.WriteTotalTimeoutMultiplier=100;
TimeOuts.WriteTotalTimeoutConstant=500;
SetCommTimeouts(hCom,&TimeOuts); DCB dcb;
GetCommState(hCom,&dcb);
dcb.BaudRate=CBR_38400;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=TWOSTOPBITS;
SetCommState(hCom,&dcb);
SetupComm(hCom, 4096, 4096);
PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR);
return TRUE; // return TRUE unless you set the focus to a control
为什么总是返回0xffffff?
hCom是全局函数
如果你非要加上这个标志,那么最后一个参数不能为空
另外,可以察看GetLastError()返回的错误代码
这篇文章认真看一下:
http://www.vckbase.com/document/viewdoc/?id=1114