读书人

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

发布时间: 2012-02-17 17:50:41 作者: rapoo

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

读书人网 >VC/MFC

热点推荐