operation valid only when the port is open

Dmeilin830 2009-11-25 01:46:39
我的程序是这样的,点击一个按钮后就关闭串口。可是出现上面这个错误。请教。在线等!!
...全文
423 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
蔓延 2011-06-10
  • 打赏
  • 举报
回复
CString str;
if(GetDlgItem(IDC_OPEN_COMM)->GetWindowText(str),str=="打开串口")
{/////////// 打开操作
GetDlgItem(IDC_OPEN_COMM)->SetWindowText("关闭串口");
if(m_ctrlComm.GetPortOpen()) // 打开了的话就先关再开
m_ctrlComm.SetPortOpen(TRUE);
m_ctrlComm.SetCommPort(3);//选择com3
if(!m_ctrlComm.GetPortOpen()) // 关了的话就再开
m_ctrlComm.SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("不能打开串口");

m_hIconRed = AfxGetApp()->LoadIcon(IDI_ICON_RED);//打开红灯
m_ctrlIconOpenoff.SetIcon(m_hIconRed);
UpdateData(false);

}
else
{////////// 关闭操作
GetDlgItem(IDC_OPEN_COMM)->SetWindowText("打开串口");

m_ctrlComm.SetPortOpen(FALSE);


m_hIconGreen= AfxGetApp()->LoadIcon(IDI_ICON_GREEN);//打开绿灯
m_ctrlIconOpenoff.SetIcon(m_hIconGreen);
UpdateData(false);
}

/* if(m_ctrlComm.GetPortOpen()) // 打开了的话就先关再开
m_ctrlComm.SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(3);//选择com3
if(!m_ctrlComm.GetPortOpen()) // 关了的话就再开
m_ctrlComm.SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("不能打开串口");*/
m_ctrlComm.SetSettings("9600,n,8,1");//波特率9600,无校验,8个数据位,1 个停止位
m_ctrlComm.SetInputMode(1);//表示以2进制检取数据
m_ctrlComm.SetRThreshold(1);//参数1表示每当串口接收缓冲区有多于或等于1个字符时将引发一个接收数据的OnComm事件
m_ctrlComm.SetInputLen(0);//设置当前接收区数据长度为0
m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据

这是代码
蔓延 2011-06-10
  • 打赏
  • 举报
回复
我的也是呀! 我一关闭串口就这样报!不知道是系统的原因还是程序的事!
Dmeilin830 2009-11-26
  • 打赏
  • 举报
回复
不是吧?没人回答啊??~~~~(>_<)~~~~
Dmeilin830 2009-11-25
  • 打赏
  • 举报
回复
void CCurrent::OnStop()
{
m_open=0;
AfxMessageBox("电机停止");
if(m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(FALSE);
m_strRXData="";
hexdata[102400]=0;
m_choose=-1;
UpdateData(FALSE);
}

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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