用MFC编写的通信程序,,打开串口时报"Port already open"的错误!!急求大神的解答!! 10
在VC中用MSCOMM控件读窗口数据,在一格对话框中建立一个MSCOMM控件,然后在对话框的onInitDialog函数中对它进行如下初始化BOOLCComutiDlg:...
在VC中用MSCOMM控件读窗口数据,在一格对话框中建立一个MSCOMM控件,然后在
对话框的onInitDialog函数中对它进行如下初始化
BOOL CComutiDlg::OnInitDialog()
{
CDialog::OnInitDialog();
if(m_ComPort.GetPortOpen())
{
m_ComPort.SetPortOpen(FALSE);
}
m_ComPort.SetCommPort(1); //选择1号串口
m_ComPort.SetInBufferSize(1024); //接收缓冲区
m_ComPort.SetOutBufferSize(1024);//发送缓冲区
m_ComPort.SetInputMode(1); //以二进制方式输入
m_ComPort.SetSettings("9600,n,8,1"); //设置波特率等参数
//设置为1表示当串口接受缓冲区中有多于或等于1个字符时
//将引发一个关于comExReceive的事件
m_ComPort.SetRThreshold(1);
if(!m_ComPort.GetPortOpen())//如果串口没有打开则打开
m_ComPort.SetPortOpen(TRUE);//打开串口
else
m_ComPort.SetOutBufferCount(0);
m_ComPort.GetInput(); //预读缓冲区以清除残留数据
return TRUE; // return TRUE unless you set the focus to a
}
在函数的第二到第五行,我已经明确写到如果端口是打开的,则关闭端口,可是
调试时m_ComPort.GetPortOpen()返回FALSE,在后面打开串口时就会报"Port already open"的错误!!
我这个程序是用在MAXA无线通信上的,我觉的是MAXA一上电就接收到了数据了,可能是缓冲区那里有值。不知道对不对,求大神帮忙解决。。。。谢谢啦!! 展开
对话框的onInitDialog函数中对它进行如下初始化
BOOL CComutiDlg::OnInitDialog()
{
CDialog::OnInitDialog();
if(m_ComPort.GetPortOpen())
{
m_ComPort.SetPortOpen(FALSE);
}
m_ComPort.SetCommPort(1); //选择1号串口
m_ComPort.SetInBufferSize(1024); //接收缓冲区
m_ComPort.SetOutBufferSize(1024);//发送缓冲区
m_ComPort.SetInputMode(1); //以二进制方式输入
m_ComPort.SetSettings("9600,n,8,1"); //设置波特率等参数
//设置为1表示当串口接受缓冲区中有多于或等于1个字符时
//将引发一个关于comExReceive的事件
m_ComPort.SetRThreshold(1);
if(!m_ComPort.GetPortOpen())//如果串口没有打开则打开
m_ComPort.SetPortOpen(TRUE);//打开串口
else
m_ComPort.SetOutBufferCount(0);
m_ComPort.GetInput(); //预读缓冲区以清除残留数据
return TRUE; // return TRUE unless you set the focus to a
}
在函数的第二到第五行,我已经明确写到如果端口是打开的,则关闭端口,可是
调试时m_ComPort.GetPortOpen()返回FALSE,在后面打开串口时就会报"Port already open"的错误!!
我这个程序是用在MAXA无线通信上的,我觉的是MAXA一上电就接收到了数据了,可能是缓冲区那里有值。不知道对不对,求大神帮忙解决。。。。谢谢啦!! 展开
3个回答
展开全部
你在后面调用m_ComPort.SetPortOpen(TRUE);//打开串口
之前应该调用m_MSComm.SetCommPort(1); //选择COM1
之前应该调用m_MSComm.SetCommPort(1); //选择COM1
追问
有的,,,我发想一个问题,,就是我在电脑设备管理器那里的串行枚举器的选框去掉之后,问题就解决了,但是出现了新的问题,就是有时我写的程序识别不了串口,还有用串口调试助手也打开,也提示无串口。这是什么情况呢??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要帮你完成吗
更多追问追答
追问
只想知道原因,串口程序我会写,打开串口时,会出现"Port already open"的错误!!,,帮我解决一些这个就行了,
追答
好的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询