vc串口调试程序,点击按钮,可以打开串口,再次点击关闭,然后再点一次想再次打开串口报错了

根据网上的教程,抄写的vc串口调试程序,自己做了一个开关串口按钮,点击按钮打开串口,再点关闭,然后再点一次想再次打开串口就报错了,thedeviceisnotopen,为... 根据网上的教程,抄写的vc串口调试程序,自己做了一个开关串口按钮,点击按钮打开串口,再点关闭,然后再点一次想再次打开串口就报错了,the device is not open,为什么只能开关 一次,再开就不行了,只能重启程序,
按钮的程序如下

void CSCommTestDlg::OnButtonOpenSerial()
{
CString str;
GetDlgItem(OpenSerialBUTTON)->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(OpenSerialBUTTON,"串口关闭");
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(OpenSerialBUTTON,"串口打开");
}
}
展开
 我来答
pingpingandarl
2012-10-20 · 超过11用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:35.5万
展开全部
哥们,串口是不能频繁打开关闭的,就是这么简单。如果打开关闭一次程序没问题,再打开就报错,十有八九是打开关闭串口太频繁导致的。
匿名用户
2012-10-18
展开全部
显然 程序 哪里 有问题

推荐看书
Visual C++_Turbo C串口通信编程实践
追问
你这也算回答问题啊...大哥...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式