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

yuica 2012-10-19 07:05:44

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

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

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("成功关闭串口");
}
}
...全文
471 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
KuKu彬哥 2012-12-11
  • 打赏
  • 举报
回复
顶一下 同求
yuica 2012-10-19
  • 打赏
  • 举报
回复
我日...我找了半天错误,天啊...谢谢了
昨夜无风 2012-10-19
  • 打赏
  • 举报
回复
if(str=="打开串口")

SetDlgItemText(OpenButton,"串口打开");
字符串明显不一样,编程要细心
Eleven 2012-10-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

自己顶一顶谁有可以开关串口的源代码给我参考一下也好
[/Quote]
串口操作不就是CreateFile/CloseHandle()打开关闭,设置波特率什么的一些参数
yuica 2012-10-19
  • 打赏
  • 举报
回复
自己顶一顶谁有可以开关串口的源代码给我参考一下也好
yuica 2012-10-19
  • 打赏
  • 举报
回复
而且你看,我的程序里面有暂停adc按钮,就是没数据也没有了,这时候关闭串口,一样再也打不开了
yuica 2012-10-19
  • 打赏
  • 举报
回复
我自己写的单片机程序,发送很慢~~~~~,我设的500ms一次....
hdg3707 2012-10-19
  • 打赏
  • 举报
回复
程序里看不出问题,你这么试试:
不让下位机进行发送数据,只运行程序,按照你的方法测试,如果没有问题,就说明是下位机不停的发数据把计算机的串口搞死了.
如果你有的USB转串口线,你再找个别的牌子的USB转串口线试试,也许是USB转串口线的驱动不太好,造成下位机发送太多的数据在上位机关闭串口瞬间把串口弄死了

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧