首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-02-17 
打开端口失败!VC++串口通信程序问题程序问题代码如下://添加的对串口的初始化语句if(m_cComm.GetPortOpen(

打开端口失败!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!!!"); 

热点排行