BOOL CJiedianDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
SetTimer(1,1000,NULL);
if(m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(1);//初始化串口信息
m_ctrlComm.SetInputMode(1);
m_ctrlComm.SetInBufferSize(1024);
m_ctrlComm.SetOutBufferSize(512);
m_ctrlComm.SetSettings("9600,n,8,1");
if(!m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);
m_ctrlComm.SetRThreshold(1);
m_ctrlComm.GetInput();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}//写一个通讯的单文档程序,不知道为什么,第一次打开通讯对话框没问题,只退出该对话框程序不退出再次打开通讯对话框就出现一个提示port already open,物理上确实没有被占用,也就是退出没关闭串口?可是我在初始化串口的时候不是用m_ctrlComm.SetPortOpen(FALSE);已经关闭了吗?那位知道原因,麻烦提示下,谢谢
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
SetTimer(1,1000,NULL);
if(m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(1);//初始化串口信息
m_ctrlComm.SetInputMode(1);
m_ctrlComm.SetInBufferSize(1024);
m_ctrlComm.SetOutBufferSize(512);
m_ctrlComm.SetSettings("9600,n,8,1");
if(!m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);
m_ctrlComm.SetRThreshold(1);
m_ctrlComm.GetInput();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}//写一个通讯的单文档程序,不知道为什么,第一次打开通讯对话框没问题,只退出该对话框程序不退出再次打开通讯对话框就出现一个提示port already open,物理上确实没有被占用,也就是退出没关闭串口?可是我在初始化串口的时候不是用m_ctrlComm.SetPortOpen(FALSE);已经关闭了吗?那位知道原因,麻烦提示下,谢谢
解决方案 »
- 这样定义是什么意思呢?
- 如何获取其他进程的消息?
- richedit 插入gif不用QQ的控件
- 大家都进来帮我看段程序啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 如何在对话框中使用滚动条?
- 括弧内指针符号什么用法
- 急,天亮前要解决!!COM组件自注册的问题!
- 怎么样在ListCtrl里面往标头和项目里加并显示图片?其中的位图操作是怎样的?
- MessageBox()执行完怎会非法操作?
- 在工程里添加了一个新的类(继承view),但在类里的ondraw里写了代码却画不出图来
- 求教VC中计算二重积分的算法程序
- 菜鸟问题:VC 中 利用edit box 连续显示变化数据的问题?请赐教啊,
BOOL CJiedianDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
SetTimer(1,1000,NULL);
m_ctrlComm.SetCommPort(1); //选择一号串口
if(m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(1);//初始化串口信息
m_ctrlComm.SetInputMode(1);
m_ctrlComm.SetInBufferSize(1024);
m_ctrlComm.SetOutBufferSize(512);
m_ctrlComm.SetSettings("9600,n,8,1");
if(!m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);
m_ctrlComm.SetRThreshold(1);
m_ctrlComm.GetInput();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
一条晚起的虫-床上用品专卖(美女、TT之类的不在此列)
等 级:
发表于:2008-01-27 18:14:5325楼 得分:0
m_ctrlComm.GetPortOpen()前加上
m_ctrlComm.SetCommPort(1);
//没有指定串口,天知道你查询的是哪个串口的状态。
//这个按你说的做了还是不行,我这个是基于单文档的,从菜单打开一个模式对话框上边的代码就没问题,如果按我以前的是非模式对话框就提示port already open,而关掉整个程序后第一次打开是没问题的,显然就是关闭对话框的时候需要处理一下(关闭串口),但是一直没效果?怎么做?网上没相关资料
还是API函数好用:
http://vckbase.com/document/viewdoc/?id=1114
//此时用串口助手之类的串口调试工具打开串口有没有问题?
//有问题的话,就是串口关闭没有成功
//关闭的时候, m_ctrlComm.SetCommPort(1); //选择一号串口
//对话框中:
void CTestDlg::OnCancel()
{
DestroyWindow();
}void CTestDlg::PostNcDestroy()
{
CDialog::PostNcDestroy();
delete this;
}