打开端口失败!VC++串口通信程序有关问题

打开端口失败!VC++串口通信程序问题
程序问题代码如下:
//添加的对串口的初始化语句
  if(m_cComm.GetPortOpen()) //如果发现串口本来是打开的,则关闭串口
  m_cComm.SetPortOpen(FALSE);
  m_cComm.SetCommPort(4); //选择COM4端口
  m_cComm.SetInputMode(1); //输入方式为二进制方式
  m_cComm.SetInBufferSize(512); //设置输入缓冲区
  m_cComm.SetOutBufferSize(512); //设置输出缓冲区
  m_cComm.SetSettings("9600,n,8,1");//波特率9600,无校验,8个数据位,1个停止位
  if(!m_cComm.GetPortOpen())
{

  m_cComm.SetPortOpen(TRUE); //打开串口
  m_cComm.SetRThreshold(1); //每当接收缓冲区有1个字符则接收串口数据
  m_cComm.SetInputLen(0); //设置当前缓冲区长度为0
  m_cComm.GetInput(); //预读缓冲区以清除残留数据
}
  else
  AfxMessageBox("打开端口失败!",MB_ICONSTOP,0);
语法上来说,上面这段代码是没有错误的。但是debug的时候每次都直接跳过if{}里的代码,直接else了。思考了很久都没有结果,希望有达人帮忙,不胜感激。

------解决方案--------------------
没看明白你的代码想干什么。。。。。。。。
贴一个我写的代码吧
C/C++ code

if( m_cComm.get_PortOpen()){
        m_cComm.put_PortOpen(FALSE);
}    
else if( !m_cComm.get_PortOpen()){    
    m_cComm.put_CommPort(1);        //设置串口号
    m_cComm.put_InputMode(1);            //1:表示以二进制方式检取数据
    m_cComm.put_Settings("115200,n,8,1"); //设置波特率,数据格式
    m_cComm.put_InBufferSize(1024);    //设置输入缓冲区大小
    m_cComm.put_PortOpen(TRUE);        //打开串口

    m_cComm.put_RThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
    m_cComm.put_SThreshold(1);
    m_cComm.put_InputLen(0); //设置当前接收区数据长度为0
    m_cComm.get_Input();//先预读缓冲区以清除残留数据
}
else
    AfxMessageBox("cannot open serial port!!!");