读书人

mfc串口通讯,做了一个开关按钮,为什么

发布时间: 2012-10-30 16:13:36 作者: rapoo

mfc串口通信,做了一个开关按钮,为什么只能开关一次...再开就报错

看的教程做的mfc串口通信,我设置一个按钮用来打开关闭串口,
当我点击第一次点击打开串口时,一切正常,提示串口成功打开,可以接受到数据,
然后再次点击就提示成功关闭,数据停止接收.

再次点击打开串口就报错了,the device is not open,为什么,这个按钮程序哪里处问题了

C/C++ code
void CSCommTestDlg::OnButtonClickedOpenSerial(){    CString str;    GetDlgItem(OpenButton)->GetWindowText(str);     if(str=="打开串口")    {        if(m_ctrlComm.GetPortOpen())        m_ctrlComm.SetPortOpen(FALSE);        m_ctrlComm.SetCommPort(1); //选择com1        if( !m_ctrlComm.GetPortOpen())        {            m_ctrlComm.SetPortOpen(TRUE);//打开串口            SetDlgItemText(OpenButton,"串口关闭");            m_ctrlComm.SetSettings("9600,n,8,1"); //波特率9600,无校验,8个数据位,1个停止位            m_ctrlComm.SetInputMode(1); //以二进制方式检到数据            m_ctrlComm.SetRThreshold(1);             //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件            m_ctrlComm.SetInputLen(0);  //设置当前接收区数据长度为0            m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据            AfxMessageBox("成功打开串口");        }        else            AfxMessageBox("cannot open serial port");    }    else    {        m_ctrlComm.SetPortOpen(FALSE);//关闭串口        SetDlgItemText(OpenButton,"串口打开");        AfxMessageBox("成功关闭串口");    }}


[解决办法]
if(str=="打开串口")

SetDlgItemText(OpenButton,"串口打开");
字符串明显不一样,编程要细心

读书人网 >VC/MFC

热点推荐