回 帖 发 新 帖 刷新版面

主题:[讨论]MSComm 控件的应用问题 ?


   大家好啊,我最近在做一个COM 口调试小软件, 基于对话框的,用MSComm控件做!

  但是在我做的过程中遇到一个问题, 就是我更具别人资料上说的,调出MSComm控件添加到项目中,

  然后在控件工具箱中 把 MSComm控件拖到对话框上,  添加了初始化代码后.在我简单测试时,发现
 
  在对话框 CommonDlg.h 文件中添加了 #include "mscomm.h" 
            CMSComm MSC;//定义了实例对象,但我发现这个类没有构造函数,但编译正确?
            BOOL temp[10]
  在对话框 CommonDlg.cpp 文件中添加了 #include "commonDlg.h"

                     DWORD style=WS_VISIBLE;
        MSC.Create(NULL,style,rect,this,IDC_MSCOMM1);
        MSC.SetCommPort(m_PortNo);
        MSC.SetSettings("9600,n,8,1");  
        temp[0]=MSC.GetPortOpen();
        //  就在我跟踪调试到这里时发现  MSC.GetPortOpen();这个函数调用
        没有返回,原理上应该返回串口打开状态?  
    
    不知为什么 定义的MSC这个对象的成员函数没有正确返回?
    
    那位高人,帮我解答一下,谢谢!

        
        

回复列表 (共1个回复)

沙发

我在CommonDlg.cpp 中添加了如下代码:

      DWORD style=WS_VISIBLE;
        temp[1]=MSC.Create(NULL,style,rect,this,IDC_MSCOMM1);
        MSC.SetCommPort(m_PortNo);   // 当程序单步执行到这里temp[1]是1,证明创建成功?是这样吧!
        MSC.SetSettings("9600,n,8,1");
                     temp[0]=MSC.GetPortOpen();
        if(temp[0])               // 当程序单步执行到这一行时temp[0]为0,这是为什么啊?  不知错在那里?
        {
            if(IDOK==MessageBox("The Com Prot alread Open! are you continue?","Open Error",MB_ICONSTOP | MB_YESNO))
            {MSC.SetPortOpen(FALSE);}
        }
        MSC.SetInBufferSize(1024);
        MSC.SetOutBufferSize(512);
        MSC.SetInputLen(0);
        MSC.SetInputMode(1);
        MSC.SetRThreshold(1);
        if(!MSC.GetPortOpen())
        {
            MSC.SetPortOpen(TRUE);
            m_bOpenF=TRUE;
            SetDlgItemText(IDC_OPENCOM,"关闭串口");
        }

        待高手解答啊..........?

我来回复

您尚未登录,请登录后再回复。点此登录或注册