不知道为什么打开串口总失败,串口号已经正确设置了。不知道是不是代码的问题,麻烦大家帮我看看。谢谢~void COpenSetComDlg::OnSet() 
{
// TODO: Add your control notification handler code here
COMMTIMEOUTS TimeOuts; CString port = ""; GetDlgItem(IDC_PORT)->GetWindowText(port); m_hCom=CreateFile(port, GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, 
NULL); // 重叠方式 if(m_hCom==(HANDLE)-1)
{
return;
}
SetupComm(m_hCom,MAXBLOCK,MAXBLOCK);
SetCommMask(m_hCom, EV_RXCHAR);
// 把间隔超时设为最大
TimeOuts.ReadIntervalTimeout=MAXDWORD; 
TimeOuts.ReadTotalTimeoutMultiplier=0; 
TimeOuts.ReadTotalTimeoutConstant=0; 
TimeOuts.WriteTotalTimeoutMultiplier=50;
TimeOuts.WriteTotalTimeoutConstant=2000; SetCommTimeouts(m_hCom, &TimeOuts); DCB dcb; if(!GetCommState(m_hCom, &dcb))
return ; dcb.fBinary = TRUE;
CString rate = "";
GetDlgItem(IDC_RATE)->GetWindowText(rate);
if( rate == "" ){
MessageBox("请输入数据传输速率!", "信息提示窗口", MB_OK);
return;
}
dcb.BaudRate = atoi(rate); // 数据传输速率 CString bit = "";
GetDlgItem(IDC_BIT)->GetWindowText(bit);
if( bit == "" ){
MessageBox("请输入数据传输速率!", "信息提示窗口", MB_OK);
return;
}
dcb.ByteSize = atoi(bit); // 每字节位数
dcb.fParity = TRUE; CString parity = "";
GetDlgItem(IDC_BAUD)->GetWindowText(parity);
if( parity == "" ){
MessageBox("请输入校验位!", "信息提示窗口", MB_OK);
return ;
} switch(atoi(parity)) // 校验设置
{
case 0: 
dcb.Parity = NOPARITY;
break; case 1: 
dcb.Parity=EVENPARITY;
break; case 2: 
dcb.Parity=ODDPARITY;
break; default:;
} CString stop = "";
GetDlgItem(IDC_STOP)->GetWindowText(stop);
if( stop == "" ){
MessageBox("请输入校验位!", "信息提示窗口", MB_OK);
return ;
} switch(atoi(stop)) // 停止位
{
case 0: 
dcb.StopBits=ONESTOPBIT;
break; case 1: 
dcb.StopBits=ONE5STOPBITS;
break; case 2:
dcb.StopBits=TWOSTOPBITS;
break; default:;
} // 硬件流控制设置
dcb.fOutxCtsFlow = TRUE;
dcb.fRtsControl = TRUE; // XON/XOFF流控制设置
dcb.fInX=dcb.fOutX = TRUE;
dcb.XonChar = XON;
dcb.XoffChar = XOFF;
dcb.XonLim = 50;
dcb.XoffLim = 50; BOOL flag = SetCommState(m_hCom, &dcb); if( flag ){
MessageBox("串口打开并配置成功!", "信息提示窗口", MB_OK);
CloseHandle(m_hCom);
return;
}else {
MessageBox("串口操作失败!", "信息提示窗口", MB_OK);
CloseHandle(m_hCom);
return;
} return;
}